当前位置: 首页 > news >正文

MySQL基础随堂笔记1

数据类型

      整数类型:bit,bool,tinyint,smallint,mediumint,int,bigint

      浮点类型:float,double,decimal

      字符串类型:char,varchar,tinytext,mediumint,text,longtext

      日期类型:date,dataTime,timeStamp,time,year

      数据类型的选择建议:

      1、越小通常越好
2、简单就好(比如: 整型比字符操作代价要小得多,因为字符集和校对规则(排序规则)使字符 比整型比较更加复杂)
3、尽量避险使用NULL
4、浮点类型统一使用decimal
5、记录时间类型选择使用int类型

权限管理

    创建用户:  create user 用户名[@主机名] [identified by '密码'];
说明:

           1、主机名默认值为%,表示这个用户可以从任何主机连接mysql
2、服务器密码可以省略,表示无密码登录
3、不指定主机名时,表示用户可以从任何主机上链接mysql数据库
修改密码:
1、通过管理员修改密码
SET PASSWORD FOR '用户名'@'主机' = PASSWORD('密码');
2、通过修改mysql.user表修改密码(表修改密码需要刷新权限)
update user set authentication_string = password('321') where user = 'test1'and host='%';
flush privileges;
给用户授权:
GRANT 权限,[,权限...] ON 数据库.表 TO 'jeffrey'@'localhost';
权限:
all: 所有权限
数据操作权限
select:查询数据
insert:插入数据
update:更新数据
delete:删除数据
create:创建数据库/表
drop:删除数据库/表
alter:修改表结构(如添加/删除列)
数据库管理权限
GRANT OPTION?:授权用户将自身权限转授他人
REFERENCES:操作外键约束
CREATE TEMPORARY TABLES:创建临时表
INDEX:管理索引
特殊权限
PROCESS?:查看当前执行的进程
LOCK TABLES?:锁定表结构

       示例:

          说明:给test1授权可以操作所有库所有权限,相当于dba

          grant all on *.* to 'test1'@‘%’;

          说明:test1可以对seata库中所有的表执行select
grant select on seata.* to 'test1'@'%';

         说明:test1可以对seata库中所有的表执行select、update
grant select,update on seata.* to 'test1'@'%';

         说明:test1用户只能查询mysql.user表的user,host字段
grant select(user,host) on mysql.user to 'test1'@'localhost';

       备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权    限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。用户授权后通过 flush privileges 来刷新权限
查看用户有哪些权限:
show grants 查看当前用户得权限
show grants for '用户名'[@'主机'] 查看其他用户得权限
撤销用户得权限:
revoke 权限列表 ON database.table FROM '用户名'[@'主机'];

DDL操作汇总

    DDL:Data Define Language数据定义语言,主要用来对数据库、表进行一些管理操作。如: 建库、删库、建表、修改表、删除表、对列的增删改等等。
库管理:
查看库:show databases;
选择库:use 数据库名:
创建库:create database [if not exists] 库名;
删除库: drop database [if not exists] 库名;
表管理:
create table 表名(
字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
)[表的一些设置];
注意:
1、在同一张表中,字段名不能相同
2、宽度和约束条件为可选参数,字段名和类型是必须的
3、最后一个字段后不能加逗号
4、类型是用来限制字段必须以何种数据类型来存储记录
5、类型其实也是对字段的约束(约束字段下的记录必须为XX类型)
6、类型后写的约束条件是在类型之外的 额外添加的约束
约束说明:
not null: 标识该字段不能为空
default value: 默认值
primary key: 主键约束,可以唯一的标识记录,插入重复的会报错
foreign key:外键约束  语法:foreign key(当前表的列名) references 引用的外键表(外键表中    字段名称) (被插入得表中对于外键列必须在引用得外键表中存在)
unique key:唯一约束. 和主键约束不同的是,唯一约束中可以有NULL,而主键中不能有NULL
auto_increment:标识该字段的值自动增长(整数类型,而且为主键)
删除表: drop table [if exists] 表名
修改表名: alter table 表名 rename [to] 新表名;
给表添加注释: ALTER TABLE 表名 COMMENT = '注释';
复制表结构: create table 表名 like 被复制的表名;
复制表结构+数据: create table 表名 [as] select 字段,... from 被复制的表 [where 条件];
表中列得管理:
添加列: alter table 表名 add column 列名 类型 [列约束] [FIRST | AFTER 其他列 ];
修改列: alter table 表名 modify column 列名 新类型 [约束];
或者
alter table 表名 change column 列名 新列名 新类型 [约束];
删除列: alter table 表名 drop column 列名;

DML操作汇总

     插入操作:
形式1:insert into 表名[(字段,字段)] values (值,值);
说明:
1、值和字段需要一一对应
2、如果是字符型或日期类型,值需要用单引号引起来;如果是数值类型,不需要用单  引号
3、字段和值的个数必须一致,位置对应
4、字段如果不能为空,则必须插入值
5、可以为空的字段可以不用插入值,但需要注意:字段和值都不写;或字段写上,值  用null代替
6、表名后面的字段可以省略不写,此时表示所有字段,顺序和表中字段顺序一致。
形式2:insert into 表名 set 字段 = 值,字段 = 值;
批量插入:
形式1:insert into 表名 [(字段,字段)] values (值,值),(值,值),(值,值);
形式2:insert into 表 [(字段,字段)] 数据来源select语句;
数据更新: update 表名 [[as] 别名] set [别名.]字段 = 值,[别名.]字段 = 值 [where条件];
删除数据: delete [别名] from 表名 [[as] 别名] [where条件];
多表删除: delete [别名1],[别名2] from 表1 [[as] 别名1],表2 [[as] 别名2] [where条件];
示例1:删除test1表中的记录,条件是这些记录的字段a在test.c2中存在的记录

             delete t1 from test1 t1,test2 t2 where t1.a=t2.c2;
示例2:同时对2个表进行删除,条件是test.a=test.c2的记录

             delete t2,t1 from test1 t1,test2 t2 where t1.a=t2.c2;
truncate删除: truncate 表名;
drop,truncate,delete的区别:
1、drop删除表,删除数据和定义,释放空间,简单来说就是把整张表删除。以后要新增数  据是不可能的了。除非重新建立一张表
2、truncate(清空表的数据),删除内容,释放空间 但是不删除表的定义。他只是清空表数    据而已
3、delete(删除表中的数据),delete语句表示删除数据中的行。delete执行删除过程中每删  除一行,并且会将删除该行的操作记录作为事务日志保存起来,以便经行回滚操作
4、truncate和不带where条件的delete一样,只删除数据,不删除表的定义
5、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。对于foreign key 约束的表不能用 truncate 删除,而是应该用不带where条件的delete。应为truncate table 记录在日志中,不能激活触发器
6、delete 语句是数据库操作语言(dml) 这个操作会放到 rollback segement 中,事务提交之  后才生效;如果有相应的 trigger,执行的时候将被触发。
7、truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到rollback segment 中,不能回滚,操作不触发 trigger。
8、如果有自增列,truncate清空表,自增列会初始化。而delete需要分情况:(如果数据    库被重启了,自增列值也会被初始化,数据库未被重启,则不变)
9、小心使用drop和truncate。删除前确认表结构和数据是否无用。否则错删,只能提桶跑    路了
10、删除速度 一般 drop > truncate > delete

http://www.dtcms.com/a/496080.html

相关文章:

  • 【开题答辩实录分享】以《住宅小区在线服务平台》为例进行答辩实录分享
  • C标准库--浮点<float.h>
  • 大学生兼职做网站做行业导航网站好
  • 怎样做个网站手机网页视频下载软件
  • 麻涌镇做网站医疗器械注册证查询
  • 青浦郑州阳网站建设邹城网站建设
  • 状态机的介绍
  • 算法---位运算
  • 如何使用python创建和维护sqlite3数据库
  • 顺德手机网站设计咨询用什么做网站后台
  • 深圳企业网站建设服务网站客户需求分析
  • 大模型 | VLM 初识及在自动驾驶场景中的应用
  • Android CarService调试操作
  • 建设部网站哪里可以报名考监理员聚名网域名注册官网
  • 一个坐标转换
  • 南京文化云网站建设群晖nda做网站
  • 网站开发一次性费用国外服务器免费ip地址
  • 一个虚拟空间做两个网站网站开发的技术流程图
  • wordpress建站全教程设计师网站资源
  • 公司网站建设记哪个科目网站目的
  • 连云港网站建设费用wordpress flash插件下载
  • 做模型找三视图那些网站深圳做网站收费
  • 不建议网站北京优化核酸检测
  • 网站的开发语言有哪些鞍钢建设集团网站
  • 山东省某三甲医院基于分类分级的数据安全防护建设实践
  • (六)构建多智能体旅行客服-如何切换智能体角色
  • SpringCloud-基础
  • 如何将一加手机的文件传输到 Mac
  • 使用腾讯云云开发(CloudBase)的云函数,删除云存储中指定目录下的过期文件
  • 佛山网站开发公司电话盐山建网站