目录
一、学习Mysql的DDL语句(数据库的定义语句) 库的操作
5)double(几位数,小数点后保留的位数):表示小数类型数据
一、学习Mysql的DDL语句(数据库的定义语句) 库的操作
1.查看数据库
-- 查询mysql数据库本身在带的所有数据库
-- show database
mysql>show databases;
运行结果:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | -- mysql默认的配置库
| mysql | -- mysql库---里面有user表,代表当前管理员用户 root用户
| performance_schema | -- mysql配置库(mysql性能相关的)
| test | -- 测试库 里面空表,可以在进行测试练习,创建表,...
+--------------------+
4 rows in set (0.01 sec)
2.创建库
方式1:
-- 创建库
-- create database 库名; 直接创建库
mysql> create database MyEE_2204;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| myee_2204 | |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
方式2:
-- create database if not exists 库名; 如果不存在这个库,创建
mysql> create database MyEE_2204;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| myee_2204 | |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
3.查询创建数据库的默认字符
-- 查询创建的数据库的默认字符集
-- show create database 库名;
mysql> show create database MyEE_2204;
+-----------+--------------------------------------------------------------------+
| Database | Create Database |
+-----------+--------------------------------------------------------------------+
| myee_2204 | CREATE DATABASE `myee_2204` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+-----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)
4.修改数据库字符
gbk:中国的中文表:一个中文对应两个字节
utf8:一个中文对应三个字节,支持中简体
-- 修改数据库的字符集
-- alter database 库名 DEFAULT CHARACTER SET 字符集;
mysql> alter database MyEE_2204 default character set gbk;
Query OK, 1 row affected (0.01 sec)
mysql> show create database MyEE_2204;
+-----------+-------------------------------------------------------------------+
| Database | Create Database |
+-----------+-------------------------------------------------------------------+
| myee_2204 | CREATE DATABASE `myee_2204` /*!40100 DEFAULT CHARACTER SET gbk */ |
+-----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
5.删除库
方式1:
-- 删除库
-- drop database 库名; 直接删除库
mysql> drop database MyEE_2204;
Query OK, 0 rows affected (0.02 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
方式2:
drop database if exists 库名; 判断删除,如果存在库,删除
mysql> drop database if exists MyEE_2204;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
二、DDL语句(数据库的定义语句)表的操作
1.MySQL数据库常用的数据类型
1)int:整数,默认长度11
int:整数,默认长度11
int(),一般指定int即可
int(自定义长度)
2)vaechar:表示字符串类型数据
-- 姓名字段
name varchar(5),-- 姓名最大支持5个字符
3)datetime:日期时间,可以指定日期时间
4)tempstamp时间戳(系统当前即时时间)
5)double(几位数,小数点后保留的位数):表示小数类型数据
2.创建表
1)前提条件:使用库
-- 使用库
-- use 库名;
mysql> use MyEE_2204;
Database changed
mysql>
2)创建表
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2,
字段名称3 字段类型3,
.....,
....,
字段名称n 字段类型 n
) ;
注意:最后一个字段名n 字段类型n不加" , "
mysql> create table staff(
-> id int,
-> name varchar(10),
-> gender varchar(5),
-> birthday varchar(50),
-> email varchar(50),
-> remark varchar(50),
-> age int
-> );
Query OK, 0 rows affected (0.02 sec)
3.查询表
1)查询库中的所有表
-- 查看库中的所有表
-- show 表名;
mysql> show tables;
+---------------------+
| Tables_in_myee_2204 |
+---------------------+
| staff |
+---------------------+
1 row in set (0.00 sec)
2)查询表的结构
-- 查询表的结构
-- desc 表名;
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| gender | varchar(2) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| email | varchar(25) | YES | | NULL | |
| remark | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)
4.修改表
1)修改表的字段名称
语法:alter table 表名 change gender 旧字符名称 新字符名称 以前的字段类型;
-- 修改表的字段名称
-- 语法: alter table 表名 change 旧字段名称 新字段名称 以前的字段类型;
mysql> alter table staff change name username varchar(20) ;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| gender | varchar(2) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| email | varchar(10) | YES | | NULL | |
| remark | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)
2)修改表的字段类型
语法:alter table 表名 modify 字段名称 新的字段类型;
-- 修改的表的字段类型
-- 语法:alter table 表名 modify 字段名称 新的字段类型;
mysql> alter table staff modify email varchar(20) ;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| gender | varchar(2) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| email | varchar(20) | YES | | NULL | |
| remark | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
7 rows in set (0.02 sec)
3)给表中新添加一列(一个新的字段名称)
语法: alter table 表名 add 字段名称 字段类型;
-- 给表中新添加一列(一个新的字段名称)
-- 语法: alter table 表名 add 字段名称 字段类型;
mysql> alter table staff add age int;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| gender | varchar(2) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| email | varchar(20) | YES | | NULL | |
| remark | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
7 rows in set (0.02 sec)
4)将表中的某一列(某个字段)删除
语法:alter table 表名 drop 字段名称;
-- 复制一张一模一样的表
-- 语法: create table 新的表名 like 旧表名;
mysql> alter table staff drop remark ;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| gender | varchar(2) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| email | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)
5)复制一张一模一样的表
语法: create table 新的表名 like 旧表名;
-- 复制一张一模一样的表
-- 语法: create table 新的表名 like 旧表名;
mysql> create table yuangong like staff ;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+-------------------+
| Tables_in_ee_2204 |
+-------------------+
| staff |
| yuangong |
+-------------------+
2 rows in set (0.00 sec)
6)对表名重命名
语法:alter table 旧表名 rename to 新表名;
-- 对表名重命名
-- 语法:alter table 旧表名 rename to 新表名;
mysql> alter table staff rename to sta;
Query OK, 0 rows affected (0.01 sec)
7)删除表
方法1:
语法: drop table 表名;
-- 删除表
-- 语法1: drop table 表名;
mysql> drop table staff;
Query OK, 0 rows affected (0.01 sec)
方法2:
语法:drop table if exists 表名;
-- 删除表
-- 语法2: drop table if exists 表名;
mysql> drop table if exists staff;
Query OK, 0 rows affected (0.01 sec)
三、SQLyog图形界面化中操作失去了语句
1.插入表记录
1)MySQL注释
-- mysql注释 (普通注释:单行注释)
# 注释(特殊注释)
/*
多行注释
*/
2)创建表
-- 建议命令行的去写
--使用库
USE ee_2204;
-- 创建表
CREATE TABLE teacher(
id INT , -- 教师编号
NAME VARCHAR(20), -- 教师名称
age INT, -- 教师年龄
gender VARCHAR(5) -- 性别
);
3)查询表的结构
-- ddl语句:数据库定义语句 查询表的结构
DESC teacher ;
4)插入数据
语法1
-- 语法1:插入全部字段,给全部字段进行赋值
insert into 表名 values(值1,值2,值3,值4...,值n) ; 一次插入一条
注意:插入的值必须和当前字段顺序要对应,而且还有符号这个字段数据类型
INSERT INTO student VALUES(1,"张三",'男','鄠邑区','zhangsna@163.com') ;
语法2
-- 语法2:一次插入多条
insert into 表名 values(值1,值2,值3,值4...,值n),(值1,值2,值3,值4...,值n)
INSERT INTO student VALUES(2,"李四",'男','高陵区','李四@163.com'),
(3,"王五","男","西安市","王五@163.com"),
(4,"赵六","男","西安市","赵六@163.com") ;
语法3
插入部分字段,未插入的字段的默认值就是null
-- insert into 表名(字段名称1,字段名称2,,,) values(值1,值2....) ; 这种写法也支持一次插入多条
INSERT INTO student(id,NAME,sex,address) VALUES(5,"钱七","女","鄠邑区"),
(6,"孙八","男","咸阳市") ;
5)查询表的记录
-- 查询表的记录 DQL语句 :数据库查询语句 (语法是最多的!)
-- 查询全表 select *(所有字段) from 表名;
SELECT * FROM student ;
注意:-企业中 "禁止"使用*, 必须写全部字段! (自己去使用*,没有问题的!)
2.修改表的记录
1)插入一条数据
INSERT INTO student VALUES(7,'男','王五','西安市','wangwu@163.com') ;
注:上面可以插入成功,因为name和sex都是varchar类型,字符串,但是实际中非法数据,需要修改数据
2)修改表中的记录
一般情况,都是带条件修改
语法1:update 表名 set 字段名称 = 值 where 字段名称 = xx ; 修改单个字段
实际开发中,每一张表都有 非业务字段--- id 序号,id是唯一的,而且可以有自增长约束
UPDATE student SET NAME = "孙悟空" WHERE id = 6 ;
语法2:修改多个字段值
update 表名 set 字段名称1 = 值1,字段名称2 = 值2,字段名称3= 值3,...where 字段名称 = xx ;
UPDATE student SET NAME = "王五" ,sex = "男" WHERE id = 7 ;
语法3:一般不用的,批量修改,针对数量比较小的时候
update 表名 set 字段名称= 值;
UPDATE student SET address = "宝鸡市" ;
3)带多个条件同时修改
update 表名 set 字段名称 = 值 where 条件1 =xx and 条件2 and 条件3.....
UPDATE student
SET NAME = '三三'
WHERE
address = '鄠邑区'
AND
sex = '男 '
AND
email = 'zhangsan@163.com ;
3.删除表中指定记录以及全表记录
删除表指定的记录,都是带条件删除
语法1: delete from 表名 where 字段名称 = 值;
DELETE FROM student WHERE id = 7 ;
语法2:TRUNCATE TABLE 表名 ;
TRUNCATE TABLE student ;
区别:
共同点:
都能够删除全表记录
不同点:
delete from 表名:仅仅只是删除全表数据,而不是删除表,如果表中id(非业务字段有自增长约束),不会影响自增长约束!意味着下次插入数据的时候,id继续按上次的id自增.
truncate table 表名:会将表中的全部记录删除并且同时删除表,而且会自动创建一张一模一样的表,它直接影响了自增长约束的值下一次插入数据的时候,自增长id字段从1开始.
自增长约束:id主键并且自增长,id不用给值
INSERT INTO student(NAME,gender,address,email)
-- 创建一个学生表
CREATE TABLE student(
-- -- 非业务字段id 序号 ,PRIMARY KEY 主键(非空且唯一),AUTO_INCREMENT :自增长约束
id INT PRIMARY KEY AUTO_INCREMENT ,
NAME VARCHAR(20),
gender VARCHAR(5),
address VARCHAR(20) ,
email VARCHAR(50)
);
homework:
数据库操作的基本语法:表操作语法
1.创建一个库:MyEE_2204
-- 创建一个库:MyEE_2204
CREATE DATABASE MyEE_2204;
1)创建一个员工表
字段 属性
id 整形
name 字符串(长度为20)
gender 字符串(长度为2)
birthday 日期型(date) ,仅仅是日期
email 字符串(长度为10)
remark 字符串(长度为50)
-- 选中MyEE_2204库
USE MyEE_2204;
-- 创建一个员工表staff
CREATE TABLE staff(
id INT,
NAME VARCHAR(20),
gender VARCHAR(2),
birthday DATE,
email VARCHAR(10),
remark VARCHAR(50)
);
2)修改表练习
2.1 在员工表基础上增加age列
2.2 修改email列长度为50
2.3 删除remark列
2.4 列名name修改为username
-- 添加age列
ALTER TABLE staff ADD age INT;
-- 查询表的记录
SELECT * FROM staff;
-- 修改email列长度为50
ALTER TABLE staff MODIFY email VARCHAR(25);
-- 删除remark列
ALTER TABLE staff DROP remark;
-- 列名name修改为username
ALTER TABLE staff CHANGE NAME username VARCHAR(20);
2.在刚才员工表基础上,进行表记录操作 (提示:插入date字段类型的数据的时候,使用格式为:比如:"2022-4-27")
添加三条员工记录
通过id修改员工记录
通过id删除某员工记录
-- 添加三条员工记录
INSERT INTO staff VALUES(1,"张三","男","1998-4-27","zs@163.com","24"),
(2,"李四","女","1999-6-18","ls@163.com","23"),
(3,"王五","男","1997-10-21","ww@163.com","25");
-- 通过id修改员工记录
UPDATE staff SET birthday="1998-1-21" WHERE id=1;
-- 通过id删除某员工记录
DELETE FROM staff WHERE id=3;
总的代码
-- 创建一个库:MyEE_2204
CREATE DATABASE MyEE_2204;
-- 查询库
SHOW DATABASES;
-- 选中MyEE_2204库
USE MyEE_2204;
-- 创建一个员工表staff
CREATE TABLE staff(
id INT,
NAME VARCHAR(20),
gender VARCHAR(2),
birthday DATE,
email VARCHAR(10),
remark VARCHAR(50)
);
-- 查看表的结构
DESC staff;
-- 添加age列
ALTER TABLE staff ADD age INT;
-- 查询表的记录
SELECT * FROM staff;
-- 修改email列长度为50
ALTER TABLE staff MODIFY email VARCHAR(25);
-- 删除remark列
ALTER TABLE staff DROP remark;
-- 列名name修改为username
ALTER TABLE staff CHANGE NAME username VARCHAR(20);
-- 添加三条员工记录
INSERT INTO staff VALUES(1,"张三","男","1998-4-27","zs@163.com","24"),
(2,"李四","女","1999-6-18","ls@163.com","23"),
(3,"王五","男","1997-10-21","ww@163.com","25");
-- 通过id修改员工记录
UPDATE staff SET birthday="1998-1-21" WHERE id=1;
-- 通过id删除某员工记录
DELETE FROM staff WHERE id=3;
总结:今日第一次接触MySQL,但英语底子不太好,还需要多敲敲加强记忆.