sql 语句主要分为下面三种
DDL 数据定义语言包含数据库及其对象的语句。
DML 数据操作语言,包含允许更新和查询数据的语句(查询语句还可分为DQL)
DCL 数据控制语言允许授予用户访问数据库中特定数据的权限
DDL 数据库操作
- 创建数据库 DDL
# 创建数据库
create database '库名' default charset 'utf8'
# 在 linux 中不需要登陆创建数据库
mysql -p'密码' -e "create database '库名' default charset 'utf8'"
- 切换数据库
use '库名'
- 查看所有数据库
show databases;
- 查看当前在哪个库中
select database();
- 删库
drop database 库名;
- 查看创建的库信息
show create database 库名;
- 数据库命名格式
数据库命名规则:
区分大小写
唯一性
不能使用关键字如 create SELECT
不能单独使用数字
关于 Linux 中 mysql 登陆语句详解
在 Linux 中,通常登陆 mysql 的 shell 语句是下面这句:
mysql -uroot -p'密码'
但是这个是不完整的,有一些缺省
的参数,而完整的语句是下面这句:
mysql -uroot -p'密码' -hlocalhost -P3306 -S/var/lib/mysql/mysql.sock
-u # 这个是指定登陆的用户
-p # 这个是登陆用户的密码
-h # 登陆的 ip 地址
-P # 这个是端口号
-S # 套接字文件地址
** 还有一种语法就是进去到 mysql 服务器,直接在外部执行 mysql 语句 **
mysql -uroot -p'密码' -e 'sql 语句'
# -e 后面可以接 sql 语句,可以实现在 linux 终端执行 sql 语句
DDL 表的操作
创建修改添加删除等一些操作
- 创建表 create table
create table 表名 (
字段名 1 类型 约束,
字段名 2 类型 约束,
);
el:
create table school (
id int not null primary key auto_increment comment '学校 id 号',
name varchar(100) null comment '学校名'
);
# 在上面的 sql 语句中
# id 字段名
# int 是数据类型
# not null primary key auto_increment comment '学校 id 号', 这些都是对字段的约束
not null # 不为空 =》 表示此字段不能为空
primary key # 主键 一般对字段添加主键约束,会自动添加一个 not null 约束 因为主键不能为空
auto_increment # 这个是自增 也会自动给字段添加一个 not null 的约束,使用 insert 添加数据时,可不给此字段添加数据,会自动+1
comment # 相当于备注 就像你有一个大名,家里人有时候还会喊你的小名
我列不完所有的约束,也写不完所有的数据类型,如果你想了解她,不如你主动向她挥手。
e 一把
- 查看表结构
desc 表名; # 可以查看 表中字段信息
show create table 表名 # 可以查看创建当前表所需要的 sql 语句
- 查看当前在哪个库中
select database();
- 查看当前库中表有哪些
show tables;
- 显示数据的详细信息
show table status lick '表名';
- 修改表
# 修改表名
alter table old_name rename new_name
# 也可以使用下面这个修改表名
rename table old_name to new_name
- 复制表
# 复制表中所有东西
create table new_name (select * from old_name )
# 复制表结构
create table new_name (select * from old_name where 5 = 4) # 只要 where 后面等式结果返回的值为 false 就可以了
# 复制表中的记录
insert into new_name select * from old_name;
- 修改字段
alter table 表名 add 新字段名 类型 约束 after 旧字段名
# 上面这个意思是给表添加一个新字段,放在旧字段后面。如果是 first 就是在表添加一个字段在第一列
# 将表中的旧字段名修改为新的字段名
alter table 表名 change 旧字段名 新字段名 类型 约束
# 修改表中字段的类型和约束
alter table 表名 modity 字段名 类型 约束
# 删除一个字段
alter table 表名 drop 字段
- 删除表
drop table 表名
- 查询表
select * from 表名
selete 字段名 from 表名
select 字段名 as 表列名 from 表名
# * 表示查询所有的字段
# as 相当于别名
- 添加数据
insert into 表名 values (数据);
insert into 表名 value(数据),(数据);
# 上面的使用 value 和 values 都没啥区别
- 更新数据
update 表名 set 字段 = 修改后的值 where 字段 = 值
# 比如 a表中的数据有下面
id name age
1 a 22
# 如果将 age 的值修改为 23
update a set age=23 where id=1
# 这个 where 相当于对某一记录进行操作
- 删除表中的一条记录
delete 表名 where 字段=值
delete 表名 # 直接使用这个的话,会直接清空表中的数据