SQL语言
SQL语言分类
SQL语言(即结构化查询语言)主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
- DDL语句,数据库定义语句:数据库、表、视图、索引、存储过程,例如CREATE、DROP、ALTER等等
- DML语句,数据库操纵语句:插入数据INSERT、删除数据DELETE、更新数据UPDATE
- DQL语句,数据库查询语言:查询数据SELECT
- DCL语句,数据库控制语句:例如控制用户的访问权限GRANT、REVOKE
名词解释:
数据库服务器:运行着数据库应用程序的设备——DELL R760+CENTOS+MySQL
硬件+系统软件+MySQL软件
数据库:默认数据库——
表(excel)的管理单元
表:记录的管理单元
记录(行):信息的载体,字段的管理单元
字段(列):字段名,字段类型(长度),字段约束组成
类型:
约束:
图示:
DDL语句:
DDL——库:
定义库:
创建数据库——语法:
CREATE DATABASE 数据库名;
数据库名要求:区分大小写
唯一性
不能使用关键词,如create等
不能单独使用数字或者特殊字符
正常的,拼音或者单词都可以
查看数据库——语法:
show databases;
选择/进入数据库
use 数据库名;
删除库:
drop database 数据库名;
1.数值类型:
a.整数类型int
b.浮点数类型float——小数
2.字符串类型:
a.字符系列char和varchar
b.枚举类型enum
c.集合类型set
3.时间和日期类型:
a.年year
b.日期date
c.时间time
d.日期和时间datetime
DDL——表:
定义表:
表是数据库存储数据的基本单位,由若干个字段(列)组成,主要用来存储数据记录(行)。
创建数据表——语法
CREATE TABLE 表名{字段名1 数据类型1,字段名2 数据类型2,.......}; //创建数据表 例如:create table stu_xinxi(id int,name varchar(20),sex enum('m','f'),age int); //enum为枚举,只能选择m或者f的yi'z
查看所有表名
show tables;
插入数据
insert into 表名 values(字段1,字段2,.........); 例如:insert into stu_xinxi values(1,"zhangsan"); //插入的数据如果是字符类型要用引号括起来
删除表
drop table 表名;
查看表结构
desc 表名;
DML语句
使用DML语句来实现对数据的操作
插入数据INSERT:
完整插入数据——语法: insert into 表名 vales(值1,值2,值3,................); 部分插入数据——语法: insert into 表名(列名,列名) values(值1,值2);
更新数据UPDATE:
语法: UPDATE 表名 SET 列名=值 WHERE CONDITION; 例如:update stu_xinxi set name="hzr" where id=1; 修改数据库root管理员密码 update mysql.user set authentication_string=password("H@@@@@@@") where user="root"; //密码不能用明文,所以用password函数进行加密成密文 flush privileges; //更新数据库配置文件
删除数据DELETE
DELETE FROM 表名 WHERE CONDITION;
DQL语句
使用DQL语句来实现数据的查询。select查询语句
查询数据SELECT:
简单查询: select * from 表名; //查询表内所有列的数据 select 列1,列2,列3 from 表名; // 查询表内列1,列2,列3的数据
通过四则运算查询: select name,salary,salary*14 from employee; //查询employee表中员工的年薪(salary是月薪)
条件查询: 单条件查询where:select 列名 from 表名 where 条件; 多条件查询and/or:select 列名 from 表名 where 条件1 and(or) 条件2; 关键字between 在什么之间:select 列名 from 表名 where 列名 between ... and ...; 关键字IN集合查询:select 列名 from 表名 where 列名(not) in (集合内容); 关键字like模糊查询:select * from 表名 where 列名 like ‘al%' //%代表任意多个字符,_代表一个任意字符
排序查询: select * from 表名 order by 用来进行排序的列名 ASC;//升序排列 select * from 表名 order by 用来进行排序的列名 DESC;//降序排列 select * from 表名 order by 用来进行排序的列名 DESC limit 3; //排序最高的前3位
DCL语句:
权限级别:
1.Global level:所有库,所有表的权限;
2.Database level:某个数据库的所有表的权限;
3.Table level:库中某个表的权限;
4.Column level:表中的某个字段的权限。
mysql用户管理
1.创建用户:使用root用户登录创建
create user 用户名@登录点 identified by '密码'; 例:create user zhangsan@'localhost' identified by 'zhangsan123';
2.删除用户
drop user 用户名@登陆点; 例:drop user 'zhangsan'@'localhost';
3.修改用户密码
root修改自己密码:
set password=password('新密码'); //修改密码后要刷新数据库配置文件
丢失root用户密码:通过破解的方式来登陆系统,修改密码,原理是是系统启动时不加载密码文件
1.修改mysql启动设置
vim /etc/my.cnf [mysqld] skip-grant-tables
2.无密码登录
重启数据库程序——systemctl restart mysqld 无密码登录——mysql -uroot 更新自己的密码——update mysql.user set authentication_string=password"H@@@@@@@" where user="root" and host='localhost'; 刷新缓存——flush privileges;
3.再次修改mysql启动设置,把skip-grant-tables注释掉,再次重启数据库。
4.登录MySQL
mysql -P 3306 -u root -p 123 mysql -e'show tables' 注释: -P MySQL服务器端口 默认3306 -u 指定用户名 默认root -p 指定登陆密码 默认空密码 后边那个mysql为指定登录mysql数据库 -e 接SQL语句 -h (host)指定要远程登陆的数据库服务器地址
5.
在执行 alter user 'root'@'localhost' identified by '密码'
mysql权限原理:
语法:grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option 参数];
权限列表:all——所有权限(不包括授权权限)
select、update——查询更新
数据库.表名:.——所有库下的所有表
web.*——web库下的所有表
例:grant select(id),insert(name,age) on mydb.mytbl to 'user8'@'localhost' identified by 'Qianfeng@123';
with_option参数:grant option——授权选项
mysql权限示例:
1.赋予权限
授予admin3用户对bbs库所有表,具有所有的权限(不包含授权)
grant all on bbs.* to 'admin3'@'%' identified by 'QianFeng@123';
授权完后可以自己试着登录测试一下
2.回收权限
查看权限——查看自己的权限:show grants; ——查看别人的权限:show grants for 用户名@'客户端主机'; 回收权限revoke——语法:revoke 权限列表 on 数据库名 from 用户名@'客户端主机'; 示例:revoke all privileges on bbs.* from admin3@'%'; //回收所有权限 删除用户的版本问题:5.6版本先删除权限,再删除用户 5.7版本直接删除用户即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)