DDL(数据定义语句)
一、库操作,定义
CREATE DATABASE wordpress CHARSET utf8mb4; 创建数据库
>>建库的规范:
1.库名是小写
2.库名不能是数字开头
3.库名要和业务有关
4.建库时要添加字符集
DROP DATABASE wordpress 删库
ALTER DATABASE wordpress CHARSET utf8mb4; 修改库字符集
SHOW DATABASES; 查看所有库
SHOW CREATE DATABASE wordpress; 查看wordpress数据库创建属性
二、表操作,定义
建表
示例:
CREATE TABLE xs (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
NAME VARCHAR(64) NOT NULL COMMENT '学生姓名',
age TINYINT NOT NULL DEFAULT 0 COMMENT '年龄',
sex CHAR(1) NOT NULL DEFAULT 'n' COMMENT '性别',
shengfen ENUM('bj','sh','cq','tj') NOT NULL DEFAULT 'bj' COMMENT '省份',
shijian DATETIME NOT NULL DEFAULT NOW() COMMENT '入学时间'
)ENGINE=INNODB CHARSET=utf8mb4;
>>建表规范:
1.表名小写,无数字开头,与业务有关。
2.表中必须要有主键,一般是一个自增长的无关列
3.选择合适的数据类型,字符长度要适中
4.每个列非空,并设定默认值(default)
5.每个列必须要有注释(comment)
6.建表时必须设置存储引擎(engine)和字符集(charset)。
查表
DESC xs; 常用
SHOW CREATE TABLE xs;
show tables;
修改表
>>添加列:
(1).在xs表中,添加'手机号'列
ALTER TABLE xs ADD shoujihao CHAR(11) NOT NULL UNIQUE KEY COMMENT '手机号';
(2).在xs表中,sex列后面添加'微信'列
ALTER TABLE xs ADD weixin VARCHAR(64) NOT NULL UNIQUE KEY COMMENT '微信号' AFTER sex
(2).在xs表中,第一列位置添加'QQ'列
ALTER TABLE xs ADD qq VARCHAR(64) NOT NULL UNIQUE KEY COMMENT 'QQ号' FIRST;
>>删除列:
ALTER TABLE xs DROP qq; 会删除列中的所有数据,无法恢复,只有使用备份恢复
>>只改属性,不改列名(shoujihao列修改属性):
ALTER TABLE xs MODIFY shoujihao VARCHAR(64) NOT NULL COMMENT '姓名';
>>列名和属性都修改(shoujihao列名改为sname):
ALTER TABLE xs CHANGE shoujihao sname VARCHAR(32) NOT NULL COMMENT '姓名';
删除表
drop table xuesheng; 会删除表中的所有数据,无法恢复,只有使用备份恢复
truncate table xuesheng; 清空表的区,数据清空,表定义保留
DCL(数据控制语言)
grant 权限 on 范围 to 用户 identified by 密码;
revoke 权限 on 范围 from 用户;
DML(数据操作语言)
用作biodegradable数据行的增,删,改,查。
录入数据(insert):
>>最规范的录入方法:
INSERT INTO xs(id,sname,age,sex,shengfen,shijian,NAME) VALUES(1,'新新',16,'m','tj',NOW(),123123)
>>简化写法:
INSERT INTO xs VALUES(2,'佳静',13,'w','bj',NOW(),1111)
>>针对性的录入数据:
INSERT INTO xs(NAME,age,sex,shengfen)
VALUES('wangwu',20,'f','tj');
>>批量录入数据:
INSERT INTO xs(NAME,age,sex,shengfen)
VALUES
('a',21,'f','tj'),
('b',21,'f','tj'),
('c',21,'f','tj');
>>查看表中的数据:
select * from xs;
>>修改数据(update): 《注意:update语句必须要加where条件》
UPDATE xs SET age=15 WHERE id=2
>>逐行删除数据行(delete): 《注意:delete语句必须要加where条件》
delete from xs where id=4;
(一)、面试题:以下语句的区别?
delete from t1;
truncate table t1;答:
turncate:
(1)DDl语句,清空整表所有数据,按照区来删除的,属于物理删除,性能高。
(2)表所占用的空间会立即释放。
delete:
(1)DML语句,清空整表所有数据,按照行来删除,属于逻辑删除,性能低。
(2)表所占用的空间不会立即释放。(二)、使用update替代delete实现伪删除
①.添加一个状态列state
ALTER TABLE xs ADD state TINYINT NOT NULL DEFAULT 1 ;
②.用update替代delete
原语句:
DELETE FROM xs WHERE id=6;
改写后:
UPDATE xs SET state=0 WHERE id=6;
③.业务语句进行调整
select * from xs;
改为:
select * from xs where state=1;