一、概述
数据库结构
数据库–>数据表–>行(记录):用来描述一个对象的信息 列(字段):用来描述对象的一个属性
补充
char 最多能存放字符个数255个,char 如果存入数据的实际长度比指定长度要小,会补空格至指定长度;如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错。
char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了
varchar存储规则:
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节。
二、查看数据库结构
查看当前服务器中的数据库
SHOW DATABASES; #不区分大小写,分号“;”表示结束
查看数据库中包含的表
USE 数据库名;
SHOW TABLES;
查看表的结构(字段)
方法1 USE 数据库名; 可缩写成:DESC 表名; 方法2 DESCRIBE 数据库名.表名;
三、SQL语句介绍
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
四、创建及删除数据库和表(DDL)
创建新的数据库
CREATE DATABASE 数据库名; 例如:create database arts;
创建新的表
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例:
create database arts;
use arts;
create table star (id int not null,name char(20) not null,sex char(2),primary key (id));
desc star;
删除指定数据表
如不用USE进入库中,则需加上数据库名 DROP TABLE 数据库名.表名; 进入数据库,则直接加表名drop table 表名
删除指定的数据库
DROP DATABASE 数据库名;
五、管理表中数据记录(DML)
向数据表中插入新的数据记录
补充密码加密
查询数据记录
以列表方式竖向显示
显示第2行后的前3行
在数据表中删除指定的数据记录
DELETE FROM 表名 [WHERE 条件表达式]; 例:delete from star where id=6; select * from star;
清空表,删除表内的所有数据
方法一:记录ID未删除
delete from test1; #DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的; 如果表中有自增长字段,使用DELETE FROM删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。
方法二:删除记录ID
truncate table test2;#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。
创建临时表
临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。
创建外键约束,保证数据的完整性和一致性
外键的定义:如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。
主键表和外键表的理解:
以公共关键字作主键的表为主键表(父表、主表)
以公共关键字作外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
格式
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
#-------------------------------参数解释---------------------------------------------------------------------------
权限列表: 用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。
数据库名.表名: 用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。例如,使用“test.*”表示授权操作的对象为 test数据库中的所有表。
'用户名'@'来源地址': 用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.test.com”、“192.168.19.%”等。
IDENTIFIED BY: 用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分,则用户的密码将为空。
例如:
#允许用户 lili 在本地查询 kky 数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录。
GRANT select ON kky.* TO 'lili'@'localhost' IDENTIFIED BY 'abc123';
flush privileges;
quit;
mysql -u lili -pabc123
use kky;
show tables;
select * from info;
其他授权例子:
#允许用户 pp 在所有终端远程连接 mysql ,并拥有所有权限。
GRANT ALL PRIVILEGES(可不写) ON *.* TO 'pp'@'%' IDENTIFIED BY '123456';
————————————————
版权声明:本文为CSDN博主「Zmac111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zmac111/article/details/118108765