1、DDL操作之数据库操作
-- 查看所有数据库
show DATABASES;
-- 创建数据库
CREATE DATABASE [IF not EXISTS] mydb1 [CHARSET=UTF8];
-- 选择使用数据库
use mydb1;
-- 删除数据库
drop DATABASE[ if EXISTS] mydb1;
-- 修改数据库编码
alter DATABASE mydb1 CHARACTER set utf8;
注:1.中括号内的东西可以省略,在复制时要把中括号去掉才能运行
2.IF not EXISTS(if EXISTS)加或不加的区别是加上肯定不报错,不加的话如果数据库存在(不存在)则会报错。
2、DDL操作之表创建
-- 选择mydb1
use mydb1;
-- 创建表
CREATE TABLE IF NOT EXISTS student(
sid int,
name varchar(20),
gender varchar(1),
age int,
birth date,
address varchar(20),
score double
);
数据类型:
数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求的才能存储起来,使用数据类型的原则是:够用就行,尽量使用取值范围小的,不用大的,以节省存储空间。
数值类型:
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 bytes | (-32768,32767) | (0,65535) | 大整数值 |
MEDIUMINT | 3 bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
INT或INTEGER | 4 bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
BIGINT | 8 bytes | (-9223372036854775808,9223372036854775087) | (0,18446744073709551615) | 极大整数值 |
FLOAT | 4 bytes | (-3.402823466E+38,3.402823466351E+38) | 0,(1.175494351E-38,3.402823466E+38) | 单精度浮点数值 |
DOUBLE | 8 bytes | (-1.7976931348623157E+308,1.7976931348623157E+308) | 0,(2.2250738585072014E-308,1.7976931348623157E+308) | 双精度浮点数值 |
DECIMAL | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
字符串类型:
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 |
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制字符串 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16777215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16777215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4294967295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4294967295 bytes | 极大文本数据 |
日期类型:
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 bytes | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 bytes | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 byte | 1907/2155 | YYYY | 年份值 |
DATETIME | 8 bytes | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 bytes | 1970-01-01 00:00:00/2038结束时间是第2147483647秒,北京时间 2038-1-19-11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
3、DDL操作之表其他操作
-- 查看当前数据库所有的表
SHOW TABLES;
-- 查看指定表的创建语句
SHOW CREATE TABLE student;
-- 查看表结构
DESC student;
-- 删除表
DROP TABLE student;
4、修改表结构
-- 添加列到:alter table 表名 add 列明 类型(长度)【约束】;
ALTER TABLE student ADD dept VARCHAR(20);
-- 修改列名和类型:
-- alter table 表名 change 旧列名 新列名 类型(长度) 【约束】;
ALTER TABLE student CHANGE dept department VARCHAR(30);
-- 修改表删除列:
-- alter table 表名 drop 列名;
ALTER TABLE student drop department;
-- 修改表名:
-- rename table 表名 to 新表名;
RENAME TABLE student to stu;
- DML操作之数据插入
-- 格式1:insert into 表(列名1,列名2……)values(值1,值2……);
-- 一次给一行数据
INSERT INTO stu(sid,name,gender,age,birth,address,score)
VALUES(1001,'张三','男',18,'2001-12-23','北京',85.5);
-- 一次给多行数据
INSERT INTO stu(sid,name,gender,age,birth,address,score)
VALUES(1002,'李四','男',18,'2001-10-23','南京',70.0),
(1003,'王五','女',17,'2000-12-23','深圳',88.5);
-- 只给某一值或多个值赋值
INSERT INTO stu(sid) values(1004);
INSERT INTO stu(sid,name) values(1005,'赵六');
-- 格式2:insert into 表values(值1,值2……);
INSERT INTO stu VALUES(1006,'黄三','男',18,'2001-5-23','北京',99.5);
注:格式1中一次给多行的情况也适用于格式2
- DML操作之数据修改
-- 数据修改
-- 格式1:update 表名 set 字段名 = 值,字段名=值……;
-- 格式2:update 表名 set 字段名=值,字段名=值……where 条件;
UPDATE stu set address = '重庆';
UPDATE stu set address = '北京' WHERE sid = 1004;
UPDATE stu set address = '上海' WHERE sid >1004;
UPDATE stu set address = '北京',score = 100 WHERE sid = 1005;
- DML操作之数据删除
-- 数据删除
-- 格式:delete from 表名 [where 条件];
-- truncate table 表名 或者 truncate 表名
DELETE FROM stu WHERE sid = 1004;
-- 删除表中所有数据
DELETE FROM stu;
-- 清空表数据
TRUNCATE TABLE stu;
注:delete 和 truncate 原理不同,delete只删除内容,而truncate类似于drop table ,可以理解为是将整个表删除,再创建该表。