2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > sql语句(select create drop alter delete insert update grant)

sql语句(select create drop alter delete insert update grant)

时间:2024-03-27 04:58:06

相关推荐

sql语句(select create drop alter delete insert update grant)

SQL语言

关系型数据库常见对象

数据库:database表:table 行:row 列:column索引:index视图:view用户:user权限:privilege

SQL语言规范

SQL语言是关系型数据库的语言标准SQL语言规范1,数据库系统中,sql语句不区分大小写2,SQL可单行或多行书写,以;结束3,--用来注释,单行注释4,对象的命名以字母开头,不使用系统保留字

SQL语言分类

DDL:数据定义语言,creat,drop,alterDML:数据操纵语言,insert,delete,updateDQL:数据查询语言,selectDCL:数据控制语言,grant,revoke

数据类型

数值型与字符型数值型: 整数(int)小数(float)字符串型: 定长(char) 变长(varcher)字段修饰符null 可为空not null 不可为空primary key 主键 unique key唯一键default 默认值character set 指定字符集auto_increment 自动递增unsigned 无符号enum() 多选一

mysql基本用法

~/.mysql_history #mysql的命令历史mysql 登录 [库名] mysql命令加上数据库名可直接登录并进入数据库-u 用户-h 服务器主机-p 密码-e 直接执行mysql命令-s 指定socket文件mysqladmin 命令ping 查看数据库是否正常password 修改密码例: mysqladmin -uroot -pssy19 ping 安全初始化脚本mysql_secure_installation mysql基本使用status --查看mysql详细信息use--切换目录system ls /data/ --调用shell命令quit --退出

DDL语句

show databases/tables; --列出所有 库/表show create database/table db1; --查看库/表的创建过程desc hellodb.user; --查看表的结构create database db1; --创建数据库drop database/table db1; --删除数据 库/表alter database/table db1 character set utf8; --修改字符集为utf8创建数据表create table yun (id int unsigned auto_increment primary key,name varchar(20) not null,gender enum("m","f") default "m",age int ) auto_increment=1;create table yyy select * from user;--创建表内容为slect的标准输出create table sss like yyy; --创建表sss结构结构和yyy一样修改数据表alter table sss rename yyy; --修改表名称alter table sss add gender enum('m','f'); --增加字段alter table sss change has_email has_email int(1) default 1; --修改字段名alter table sss drop gender; --删除字段alter table sss add primary key (stuid); --添加主键

DML语句(增删改)

insert(增),delete(删),update(改)insert: --添加记录insert ssy (classid,class,numofstu) values (10,"yunge",21),(11,"mage",28);insert ssy values (11,"niuge",33)--注:不指定字段名即所有字段次序赋值,字符串数据要用引号update --修改记录update ssy set class="jj" where classid=12;delete --删除记录delete from ssy where classid=12;

DQL语句(查)

单表查询--字段过滤select * from classes; --显示表中所有字段select user,host from classes; --显示表中user和host两个字段select name 姓名,age 年龄,gender 性别 from students; --字段显示使用别名--记录过滤--条件判断 where --比较操作符: =等于 <>不等于 >大于 <小于--逻辑操作符: and且 or或 not取反--通配符查询: like %任意字符 _任意单个字符 s%以s开头 %s以s结尾 %s%包含sselect * from students where gender="m"; --取gender为m的行select * from students where gender<>"m"; --取gender不为m的行select * from students where gender="m" and age>25; --取gender为m并且age大于25的行select * from students where classid is null; --取classid为空的行 select * from students where classid is not null; --取classid不为空的行select * from students where name like 's%'; --取name以s开头的行select * from students where not name like 's%'; --取name不以s开头的行select * from students order by age;--将age字段中的行排升序select * from students order by age desc; --将age字段中的行排降序--聚合函数 count()数量 avg()平均值 max()最大值 min()最小值 select count(*) from students; --统计表中总行数select avg(age) from students; --统计表中age的平均值--分组 group byselect classid,avg(age) from students where classid is not null group by classid; --取每个班级的平均年龄select classid,gender,avg(age) from students where classid is not null group by classid,gender; --取每个班级男生女生的平均年龄多表查询联合查询: union 纵向连接,字段名可以不同,字段数需相同,具有去重功能select stuid,name,age,gender from students union select tid,name,age,genderfrom teachers;子查询: select的执行结果被其他sql语句调用--用于比较表达式中的子查询;子查询仅能返回单个值select name,age from students where age>(select avg(age) from students );--用于FROM子句中的子查询select aage,classid from (select avg(age) aage,classID from students groupby Classid) s where aage>10;交叉连接: cross join(横向笛卡尔)--两张表完全结合select * from students cross join teachers;--两张表完全结合,并表起别名取students的stuid和name,取teachers的tid和nameselect s.stuid,s.name,t.tid,t.name from students s cross join teachers t;内连接: inner join 横向连接--从结果表中删除与其他被连接表中没有匹配行的所有行select * from teachers inner join students on teachers.tid=students.teacherid;--一旦定义表的别名,原表名将无法使用select t.tid,t.name,s.name,s.stuid from teachers t inner join students s on t.tid=s.teacherid;外连接: 横向连接左外连接:left join 取1表的全部记录且取2表的与1表交集的记录,无交集用null表示select s.name,s.age,t.name,t.age from students s left join teachers t on s.teacherid=t.tid;右外连接:right join 取2表的全部记录且取2表的与1表交集的记录,无交集用null表示select s.name,s.age,t.name,t.age from students s right join teachers t on s.teacherid=t.tid;完全外连接: 左外连接加右外连接 取表一和表二全部记录select * from students s left join teachers t on s.teacherid=t.tid union select * from students s right join teachers t on s.teacherid=t.tid;自连接: 表1与表1连接select e.name,l.name from db1 as e inner join db1 as l on e.leaderid=l.id;三表连接select st.name,co.course,sc.score from scores sc inner join courses co on sc.courseid=co.courseid inner join students st on st.stuid=sc.stuid;

view 视图

视图: 是一种虚拟的表,select命令的查询结果,基表的修改会使视图变化视图创建:create view jj as select students.name,courses.course,scores.score from courses inner join scores on courses.courseid=scores.courseid inner join students on students.stuituid=scores.stuid;视图查询 select * from jj;视图删除 drop view jj;

用户管理DCL

用户数据库: mysql.user %通配符,任意字符_通配符,单个字符create user yun@'10.0.0.%'; 创建用户 drop user yun@'10.0.0.8'; 删除用户rename user jj@'10.0.0.8' to mage@'10.0.0.8'; 用户名修改设置密码update mysql.user set password=password('ssy19') where user='root';flush privileges; 修改后生效破解mysql root密码vim /etc/f[mysqld]skip-grant-tables 跳过密码验证 skip-networking 禁止远程权限管理DCL语言grant select(user,host),insert(user) on mysql.user to yun@'10.0.0.%'; 字段授权grant all on *.* to root@'10.0.0.%'; 授予所有权限针对所有库所有表grant all on mysql.* to yun@'10.0.0.%'; 授予所有权限针对mysql库下的所有表show grants for yun@'10.0.0.%'; 查看用户获得的权限revoke delete on mysql.* from yun@'10.0.0.%'; 取消用户权限revoke all on mysql.* from yun@'10.0.0.%'; 取消用户全部权限

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。