数据库基础知识1

2021-06-28 19:57发布

DAY06

-- DDL 数据定义语言 

-- 创建一个默认值字符集的数据 

CREATE DATABASE db1;

-- 创建指定字符集的数据库

CREATE DATABASE db2 CHARSET utf8;

CREATE DATABASE db3 CHARACTER SET utf8;

-- 切换数据库 

USE db1;

-- 查看数据库的创建信息 

SHOW CREATE DATABASE db1;

-- 查看所有的数据库

SHOW DATABASES;

CREATE DATABASE db3 CHARSET gbk;

SHOW CREATE DATABASE db3;

-- 修改数据库的字符集

ALTER DATABASE db3 CHARSET utf8;

-- 删除数据库

DROP DATABASE db3;

-- 创建一张表   

CREATE TABLE student(

       id INT,

       name VARCHAR(20),

       sex VARCHAR(20),

       age INT,

       hobby VARCHAR(20)

);

-- 修改表名 

ALTER TABLE `user` RENAME student;

-- 查看表结构

DESC student;

-- 添加一列  默认在最后进行添加

ALTER TABLE student ADD grade DOUBLE;

-- 添加一列 first 在最前面添加

ALTER TABLE student ADD aa INT FIRST;

-- 在指定字段后面进行添加    after

ALTER TABLE student ADD bb INT AFTER age;

-- 修改一列   change 改变

ALTER TABLE student CHANGE bb cc INT;

-- 删除一列

ALTER TABLE student DROP aa;

-- 删除表

DROP TABLE student;

 

 

-- DML 数据操纵语言

USE db2;

CREATE TABLE student(

       id INT,

       `name` VARCHAR(20),

       sex VARCHAR(20),

       age INT,

       hobby VARCHAR(20)

);

-- 向表中添加数据

INSERT INTO student(`name`) VALUES('张三');

INSERT INTO student(id,sex,age,hobby) VALUES(1,'男',17,'吃饭');

INSERT INTO student(id,`name`,sex,age,hobby) VALUES(2,'李四','男',19,'睡觉');

-- 给表中所有字段添加数据  使用简写的格式

-- 添加值的个数和顺序要跟列名保持一致

INSERT INTO student VALUES(3,'马保国','男',69,'闪电五连鞭');

--  一次添加多条数据

INSERT INTO student(id,`name`,sex,age,hobby)

VALUES(4,'王五','男',20,'打豆豆'),

(5,'小红','女',16,'逛街'),

(6,'洋老板','男',18,'冲'),

(7,'豆豆','女',23,'被打');

 

-- 修改 update

-- 修改张三爱好为炒股

UPDATE student SET hobby = '炒股'WHERE `name` = '张三';

-- 修改张三的sex=男  age=17

UPDATE student SET sex = '男',age = 17 WHERE `name` = '张三';

-- 修改id为1000的姓名为王小二  

-- 条件不满足不会更新

UPDATE student SET `name` = '王小二' WHERE id = 1000;

-- 没有修改条件,修改表中所有数据

UPDATE student SET sex = '男';

 

-- 删除 delete

-- 带条件的删除

-- 删除姓名为张三的数据

DELETE FROM student WHERE `name` = '张三';

 

-- 删除年龄为17的数据

DELETE FROM student WHERE age = 17;

-- 不带条件的删除 就是清空表中所有的数据

DELETE FROM student;

 

-- 销毁表

DROP TABLE student;

-- 清除表中数据

TRUNCATE TABLE student;

 

 

-- MySQL数据类型

USE db2;

CREATE TABLE t1(

       tid INT,

       money DOUBLE,

       tname VARCHAR(10), -- 10代表最大位数

       d1 DATE,  -- 年月日

       d2 TIME,   -- 时分秒

       d3 DATETIME, -- 年月日时分秒

       d4 TIMESTAMP  -- 时间戳

);

 

-- 添加完整的

INSERT INTO t1 VALUES

(1,5.38,'李四','2021-6-28','19:22:22','2021-6-28 19:22:22','2021-6-28 19:22:22');

-- 测试d1和d2

INSERT INTO t1(d1,d2)VALUES ('2021-6-28 19:22:22','2021-6-28 19:22:22');

-- 测试d3和d4  d3默认值是null  d4默认值是当前系统时间

INSERT INTO t1(d3,d4) VALUES(

'8888-12-12 12:12:12','8888-12-12 12:12:12');

 

-- sql约束

/*

       添加数据的时候给上限制条件

       主键约束 primary key auto_increment

       非空约束 not null

       唯一约束 unique

       默认值约束 default

*/

/*

 

主键约束。理论上每一张表都应该有一个主键,将一个字段设置为主键之后,该字段不能为空并且不能重复

主键一般都是附加项,以*id命令  user_id  uid,主键的作用就是确定每一条数据的唯一性

设置主键之后,维护起来比较麻烦,可以将主键交给mysql进行维护,设置主键自增auto_increment

 

自增的特点

       1、只有int类型才能设置主键自增

       2、初始值是1

       3、每次在最大值自增1

       4、已经出现过的主键不会再出现

*/

USE db2;

CREATE TABLE t2(

       tid INT PRIMARY KEY AUTO_INCREMENT,

       tname VARCHAR(20)

);

-- 添加数据

INSERT INTO t2 VALUES(1,'张三');

INSERT INTO t2 VALUES(1,'李四'); -- 报错 主键唯一

INSERT INTO t2 VALUES(NULL,'王五'); -- 自动填充主键

INSERT INTO t2(tname) VALUES('赵六');

INSERT INTO t2 VALUES(7,'田七');

INSERT INTO t2 VALUES(NULL,'王小二'); -- id为8

 

DELETE FROM t2 WHERE tid = 8;

INSERT INTO t2 VALUES(NULL,'张翠花'); -- tid为9

 

-- 测试其他约束

/*

UNIQUE 唯一约束 约束能力没有主键那么强 还是可以为空的,一般用来约束用户名、手机号、邮箱

not null 非空约束

default 默认值约束   如果该字段没有添加值,使用默认值进行填充,如果添加了值,添加的值会覆盖默认值

*/

 

CREATE TABLE `user`(

       uid INT PRIMARY KEY AUTO_INCREMENT,

       uname VARCHAR(20) UNIQUE,

       sex VARCHAR(20) NOT NULL,

       hobby VARCHAR(20) DEFAULT '唱跳rap打篮球'

);

INSERT INTO `user` VALUES(NULL,'张三','男','跳舞');

INSERT INTO `user` VALUES(NULL,'张三','女','跳舞1');-- 报错 张三存在

INSERT INTO `user` VALUES(NULL,'李四',NULL,'唱歌'); -- 报错 sex不能为null

INSERT INTO `user` VALUES(NULL,'王五','男',NULL);

INSERT INTO `user` VALUES(NULL,'王五1','男',DEFAULT);

 

 

-- DQL 数据查询语言

USE db2;

-- select 查询

SELECT * FROM student;

-- 查询单列

SELECT `name` FROM student;

-- 查询多列

SELECT `name`,age FROM student;

-- 列设置别名 as可以省略

SELECT `name` AS 姓名,age 年龄 FROM student;

-- 条件查询  where 查询姓名为张三的信息

SELECT * FROM student WHERE `name` = '张三';

-- 查询性别为男的信息

SELECT * FROM student WHERE sex = '男';

-- 查询性别为男而且姓名为洋老板的信息

SELECT * FROM student WHERE sex = '男' AND `name` = '洋老板';

-- 查询性别为男或者姓名为豆豆的信息

SELECT * FROM student WHERE sex = '男' OR `name` = '豆豆';

-- 查询年龄在17-21岁之间的信息

SELECT * FROM student WHERE age >= 17 AND age <= 21;

-- 范围查询 between... and ...

SELECT * FROM student WHERE age BETWEEN 17 AND 21;

-- 性别不为男的信息

SELECT * FROM student WHERE sex <> '男';

SELECT * FROM student WHERE sex != '男';