今日内容
1.MySQL
1.1什么是数据库?
数据库就是存储数据的仓库! 数据库存储数据 1)存储空间非常大! --成千上万上亿条数据,用户可以进行增删改查! 2)数据独立性高 3)实现数据共享 4)减少数据的冗余度 5)通过数据库可以实现数据的统一性和维护性!
1.2DDL语句基础语法
库的操作 1)查询所有库 show databases; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | 111 | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) 2)创建库的语法 如果没有这个库,就创建这个库 ---create database if not exists 库名; mysql> create database if not exists szr; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | 111 | | | mysql | | performance_schema | | sys | | szr | +--------------------+ 7 rows in set (0.00 sec) 直接创建库 ---create database 库名; mysql> create database szr1; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | 111 | | mysql | | performance_schema | | sys | | szr | | szr1 | +--------------------+ 7 rows in set (0.00 sec) 3)查询指定库的信息--包括它的字符集 ---show create database 库名; mysql> show create database szr;---现在是utf8编码格式 +----------+----------------------------------------------------------------------+ | Database | Create Database | +----------+----------------------------------------------------------------------+ | szr | CREATE DATABASE `szr` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ | +----------+-----------------------------------------------------------------------+ 1 row in set (0.00 sec) 4)修改库的字符集 ---alter database 库名 (default(省略)) character set 字符集格式; mysql> alter database szr character set gbk; Query OK, 1 row affected (0.00 sec) mysql> show create database szr;--改成gbk格式了 +----------+-------------------------------------------------------------+ | Database | Create Database | +----------+-------------------------------------------------------------+ | szr | CREATE DATABASE `szr` /*!40100 DEFAULT CHARACTER SET gbk */ | +----------+-------------------------------------------------------------+ 1 row in set (0.00 sec) 5)删除库 如果存在库名,则删除 ---drop database if exists 库名; 直接删除库 ---drop databse 库名;
表的操作 -- 普通注释 单行注释 # 特殊注释 /*多行注释*/ 创建表的前提 use 库名; mysql常见的数据类型: int --int(int类型的字符数) 前者:int---默认11位,当前这个字段(列的名称) 值本身的实际位数 (推荐) 年龄这个字段----- 25--使用int就可以表示即可 后者:int(3)----给用户id(编号:1,2....n)---->不够三位补0 (不推荐后者) id--->1---------------->001 varchar(字符长度) --字符串类型 姓名这个字段---->varchar(20) ---->最大长度取到20, "钟离" 实际两个字符 在mysql中字符串写的时候---->可以使用""双引号,也可以使用''单引号 date --日期类型---仅仅表示日期 datetime --日期+时间 timestap --时间戳---当前插入数据或则修改/删除数据的即时时间 double --小数类型 double(3,2): 小数是3位数,小数点后保留2位 clob --大字符类型,某个表中某个字段---使用clob来存储大文本! blob --大字节类型---存储大图片文件---大字节类型 查询库中有哪些表 show tables ; 创建表的语法 create table 表名( 字段名称1 字段类型1, 字段名称2 字段类型2, 字段名称3 字段类型3, .... 字段名称n 字段类型n ) ; mysql> create table student( -> id int, -> name varchar(10), -> age int, -> gender varchar(5), -> avg_socre double(3,1) -> ); 查询表的结构--看到表的字段有哪些 desc 表名; 修改表的字段类型 alter table 表名 modify 字段名称 修改后字段类型; 修改字段名称--这个语法不要直接同时修改字段类型--并不改变字段类型 alter table 表名 change 以前的字段名称 现在的字段名称 以前的字段类型; 修改表--添加一个新的字段 alter table 表名 add 字段名称 字段类型; 修改表--- 删除表中某个字段 alter table 表名 drop 字段名称 ; 修改表名 alter table 表名 rename to 新表名; 查询表的字符集 show create table 表名; 修改表的字符集 alter table 表名 character set 字符集格式; 复制表---快速去创建有一个结构相同的表 create table 新表名 like 旧表名; 删除表 如果存在输入的表名--删除 drop table if exists 表名; 直接删除表名 drop table 表名;
1.3DML语句
表的操作 插入数据 1)插入全表数据 insert into 表名 values(值1,值2,值3,值3...值n); 2)插入全表数据也支持一次插入多条 insert into 表名 values(值1,值2,值3,值3...值n),(值1,值2,......值n),(..) ; 3)插入数据 --插入部分字段,没有插入的字段值就是null(空值) --也可以支持一次插入多条数据,部分字段 insert into 表名(字段名称1,字段名称2.,等部分字段)values(值1,值2,值3...),(值1,值2,值3...),(...); 修改数据 1)带条件修改(一次修改一个或者多个)---条件--一般都是非业务字段去修改 update 表名 set 字段名称= 值(修改内容) where 字段名称= 值(修改条件); update 表名 set 字段名称1= 值1,字段名称2=值2,....(修改内容)where 字段名称= 值(修改条件); 2)修改的时候如果不带where条件,属于批量修改(很少用) 删除 1)带条件删除 delete from 表名 where 字段名称 = 值; (条件一般使用非业务字段删除) delete from 表名 where 字段名称1 = 值1 and 字段名称2 = 值2 ....多个条件删除 2)删除全表数据 delete from 表名; 是删除全表数据,表结构还在 删除全表数据 truncate table 表名; 是删除全表数据,表结构也删除 查询 1)查询全表 select 全部字段名称 from表名; select * from 表名; --*代表全部字段 (实际开发中禁用*) 2)带条件查询 查询全表字段并且给别名 给别名as--可省略 SELECT 字段名称 AS '编号' FROM 表名; 查询时候指定部分字段 查询指定字段如何去重 ---关键字distinct SELECT DISTINCT 字段名称 (ASS省略)'编号' FROM 表名;
面试题
delete from 表名 和 truncate table 表名都是删除全表,有啥区别?
delete from 表名 仅仅是删除表的全部数据,表结构还在 -如果表中的id有自增长约束存在,不会影响自增长约束的值 -下一次插入数据之后在上一次id的基础之上继续自增! truncate table 表名 不仅仅将表的全部数据删除, -而且它会删除这个表,会在创建一个创建空表,直接影响了这种(非业务字段id)自增长主键的值 -下一次插入数据的时候,从1开始继续自增!