好长时间没有看数据库的东西,啥都忘得一干二净,于是下决心抽点时间把常用的sql语句总结一下,方便以后自己使用的时候能够快速找到自己想要的。由于各种sql语句还是挺多的,我把它多分几篇,计划分成三篇。
- 对数据库、表、列属性的操作,这里还没有涉及到对数据的操作
- 对单个表中数据简单的增删改查,包括一些聚合函数的使用等
- 多表操作
下面来了解一下,什么是SQL?
SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。各数据库厂商都支持ISO的SQL标准(即普通话)。各数据库厂商在标准的基础上做了自己的扩展(方言)。
- DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP
- DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); INSERT、 UPDATE、 DELETE
- DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
- DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
对数据库和表、列的操作
指令 | 含义 |
create databse mydb; |
创建数据库 |
create database mydb character set gbk; |
创建数据库并设置编码格式为gbk。不指定的话默认为utf-8,这个在安装的时候设置了 |
show databases; |
查看当前数据库服务器中的所有数据库 |
show create database mydb; |
查看前面创建的mydb2数据库的定义信息 |
drop database mydb; | 删除前面创建的mydb3数据库 |
alter database mydb set utf8; |
把mydb2的字符集修改为utf8 |
select database(); | 查看当前使用的数据库 |
use mydb; | 切换数据库 |
-- 注释 | 中间需要敲空格,再写注释 |
create table 表名(字段名 类型(长度) [约束],字段名 类型(长度) [约束]); |
主键约束:primary key;要求被修饰的字段:唯一和非空 唯一约束:unique,要求被修饰的字段:唯一 非空约束:not null,要求被修饰的字段:非空 |
show tables; | 查看数据库中的所有表 |
desc 表名; | 查看表结构 |
show create table 表名; | 查看表的创建细节 |
drop table 表名; | 删除表 |
alter table 表名 character set 字符集; | 修改表的字符集 |
create table copy_1 select * from 表名; | 复制表并命名为copy_1 |
create table copy_1 select * from 表名 where 1=0; | 只复制表结构不复制表内容(就是在where条件加入永不为真的值) |
alter table 表名 add 列名 varchar(20); | 添加新列 |
alter table 表名 change 旧列名 新列名 int | 修改列名 |
alter 表名 drop column 列名 | 删除列 |
数据库名命名规则:
- 第一个字符必须为下列之一:字母、下划线、#及@符号。
- 后续字符由字母、十进制数、下划线、#、$及@符号组成。
- 不能为RDBMS(数据库管理系统)的保留关键字。
- 不允许空格及其他字符。
数据库完整性:
- 实体完整性:保证一行数据是有效的
主键约束:PRIMARY KEY
唯一约束:UNIQUE
2. 域完整性:保证一列数据是有效的、
非空约束:NOT NULL
默认约束:DEFAULT (设定默认值后,可以在添加此列时不指定值,数据库会自动填充设定的默认值。)
create t_student(stu_id int primary key,stu_name varchar(10) not null,stu_sex varchar(5) default 'male')
如果没有填写具体的性别均会默认为男性
3. 引用完整性:保证引用的编号是有效的
外键:
create table t_class(
class_id int primary key,
class_name varchar(20) unique not null);
create table t_student(
student_id int primary key,
s_c_id int references t_class(class_id),
student_name varchar(10) not null,
student_sex varchar(5) default 'male',
constraint foreign key(s_c_id) references t_class(class_id);