MYSQL基础语句
参考书籍《 MySQL数据库基础与实例教程》 --孔祥盛
SQL(structured query language)结构化查询语言,应用最为广泛的关系型数据库语言。
MYSQL属于关系型数据库管理系统中的一种,数据库用户必须使用关系型数据库管理系统,才能调用操作系统的进程管理、内存管理、设备管理以及文件管理等服务,为数据库用户提供管理、控制各种数据库。
MYSQL用法总结
1、创建库choose、显示库、删除库
Create database choose;
Show create database choose;
drop database choose;
2、创建表my_table、显示表、删除表
Create database choose;
Use choose;
Create table my_table(
Today datetime,
Name char(20)
);
Show table my_table;
Drop table my_table;
3、创建复合类型变量
Create table person(
Sex enum(‘男’,’女’), #enum创建复合型变量
Interest set(‘music’,’swim’,’shopping’,’traveling’)
); #set创建复合型变量
Insert into person values(‘女’,’music,traveling’); #set创建的复合型变量可以多选
4、创建表含有约束及外键的表
Create table course(
Course_no int auto_increment primary key, #设置自增型字段,主键约束
Course_name char(10) not null, #非空约束
Up_limit int default 60, #默认值约束
Description text not null,
Status char(6) default ‘未审核’,
Teacher_no char(10) not null unique, #非空约束,唯一性约束
Constraint course_teacher_fk foreign key(teacher_no) references teacher(teacher_no) #外键约束,要给外键取个名字,同时说明外键是哪个,连接的是哪个表
)engine=innoDB default charset=gbk; #指定字符集及引擎
5、复制表
Create table person_1 like person; #只复制表结构
Create table person_1 select * from person; #复制表结构及数据
6、添加、删除、更改字段
Alter table person drop sex;#删除字段
Alter table person add sex enum(‘男’,’女’) first;#添加字段,first表示该变量放到前面
Alter table person change sex gender text; #更改字段,一定要加上新字段的变量类型
7、添加、删除约束
Alter table person add constraint email_uinque unique(email); #添加约束,记得还要重新给新约束起个名字
Alter table person drop primary;
Alter table person drop foreign key choose_student_fk; #删除外键
8、删除表
一般的表删除直接drop table [表名];但是如果是删除父表,必须将其子表的外键依赖删除才可以删除附表,alter table [表名] drop foreign key [外键名];或者使用禁用外键的语句set foreign_key_check=0,之后再启用set foreign_key_check=1。
9、插入记录、更改记录、删除记录
Use choose;
Insert into course values(null,’java语言程序设计',default,'暂无','已审核','001');
insert into course values(null,'MYsql数据库',150,'暂无','已审核','002'); #第一个为null是因为上文第4条创建course表中,第一个字段是自增型变量,取null后会主动填充。
Insert into course values
(null,’java语言程序设计',default,'暂无','已审核','001'),
(null,'MYsql数据库',150,'暂无','已审核','002'); #批量插入数据方法
Replace into course values(null,’java语言程序设计',60,'暂无','已审核','001'); #更改记录
Update course set course_name='php编程基础' where teacher_no=’001’;
Delete from course where course_name=’java语言程序设计';
Truncate table course;#删除course表中所有记录
10、模糊查询
Select * from new_student where student_name like ‘%\_%’; #其中%代表任意字符,\为转移字符用于提示后面的_为显示内容而不是代表一个字符
Select * from new_student where student_name like ‘_%’; #此时_代表一个字符
Select id, name from new_student where name in (a,b);
正则表达式regexp,模糊查询
select * from course where course_name regexp 'java';#包含
select * from course where course_name regexp '程序设计$';#以程序设计结尾
select * from course where course_name regexp '^j.*程序设计$';#^表示以j开头,.*连接
11、表记录查询
Select * from course;
Select distinct course_name from course;#选择不重复的记录
Select * from course limit 0,3; #3为显示3条记录,0是从第一条开始
12、连接表查询
Select student_no,student_name,student_contact,s.class_no,class_name,
from student as s join classes as c on s.class_no=c.class_no;#内连接,检索有班级的学生的班级信息
Select student_no,student_name,student_contact,s.class_no,class_name,
from student s, classes c
where s.class_no=c.class_no; #上面的等价表达式
select student_no,student_name,student_contact,s.class_no,class_name from student as s left join classes as c on s.class_no=c.class_no;#左连接,检索所有学生的班级信息
select student_no,student_name,student_contact,s.class_no,class_name from student as s right join classes as c on s.class_no=c.class_no;#右连接,检索所有班级的学生信息
select class_name,student_name,course_name,choose.course_no,score
from classes join student on classes.class_no=student.class_no
join choose on student.student_no=choose.student_no
join course on choose.course_no=course.course_no
where class_name='2012自动化2班';#多表连接,查询2012自动化二班的所有学生所有课程的成绩
select student_no 编号, student_name 姓名, student_contact 联系方式
from student
union all
select teacher_no, teacher_name,teacher_contact
from teacher; #合并结果集,其实是纵向连接
13、函数
Select * from student where substring(student_name,1,1)= '张'or substring(student_name,1,1)='田';# substring函数提取字符
select * from student where substring(student_name,1,1) in ('张','田'); # in函数,在什么里面
select count(student_no) as number from student;#count函数
select sum(score) 总成绩 from choose; #sum函数
select max(score) 最高分, min(score) 最低分 from choose;
select group_concat('java','程序','设计'); #group_concat函数,字符串连接
select * from tb where datediff(dd,sendtime,getdate())=0;#datediff函数,返回两个日期之间天数
14、常用的查询结构
Select [字段名]
From[表名]
Where[条件]
Group by [字段名]
Having[条件]
Order by [字段名]
select student.student_no,student_name,count(course.course_no),max(score), min(score), avg(score)
from student join choose on student.student_no=choose.student_no
join course on choose.course_no=course.course_no
group by student.student_no #group by() 不单独使用,与聚合函数一起使用
having avg(score)>70#having在group by后面,顺序不能错
order by student.student_no;
Select
(case when [条件1] then [字段1]
when [条件2] then [字段2]
else [字段0] end)
as [列名]
from [表名]
select
(case when 语文>=80 then '优秀'
when 语文>=60 then '及格'
else '不及格' end) as 语文,
(case when 数学>=80 then '优秀'
when 数学>=60 then '及格'
else '不及格' end) as 数学,
(case when 英语>=80 then '优秀'
when 英语>=60 then '及格'
else '不及格' end) as 英语,
from table
子查询,即查询里面嵌套查询
select student_name,score
from student,choose
where score>(
select avg(score)
from student, choose
where student.student_no=choose.student_no and student_name='张三'
);
15、逻辑运算符
select * from course where up_limit !=60;#!为非的意思
16、排序
select * from choose order by score desc;#desc降序,asc升序
17、将查询结果建立一个新表
Create table bb as select * from table1 where id=1;
MYSQL基础语句的更多相关文章
- MySQL 基础语句
MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...
- MySQL基础语句与其在Python中的使用
一.MySQL基础语句 $ mysql -u root -p (有密码时) $ mysql -u root (无密码时) QUIT (or \q) 退出 查看当前所有数据库 show dat ...
- MySQL基础语句【学习笔记】
放在这里,以备后查. 1. 数据库, 数据库服务器, 数据库语言 数据库,是持久性数据的集合,供给定企业的应用程序系统使用,并且由一个数据库管理系统来管理: 数据库服务器,又称数据库管理系统,用来管理 ...
- 入门MySQL——基础语句篇
前言: 前面几篇文章,我们介绍了MySQL的基础概念及逻辑架构.相信你现在应该有了自己的一套MySQL环境,接下来我们就可以开始练习MySQL了.本文将从MySQL最基础的语句出发,为你展示出创建及 ...
- 2-14-1 MySQL基础语句,查询语句
一. SQL概述 结构化查询语言(Structured Query Language)简称SQL 1. 它是一种特殊目的的编程语言 2. 它还是一种数据库查询和程序设计语言 (用于存取数据以及查询.更 ...
- MySQL基础语句(MySQL内置函数 )
MySQL 字符串函数 函数 描述 实例 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码. 返回 CustomerName 字段第一个字母的 ASCII 码: SELECT ASCI ...
- MySQL 基础语句的练习2
CREATE TABLE student ( id INT, NAME ), Chinese FLOAT, English FLOAT, Math FLOAT ); ,,,); ,,,); ,,,); ...
- MySQL基础语句(修改)
①INSERT INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80); 向students表插入 ...
- MySQL 基础语句的练习
-- *** ①.对数据库的操作 *** -- -- 查看所有的数据库 SHOW DATABASES; -- 创建数据库 CREATE DATABASE day1026 DEFAULT CHARACT ...
随机推荐
- linux中配置NTP基本操作
计算机的系统时间是由计算机内的石英晶体震荡电路以固定的震荡频率产生的date 查看当前时区vim /etc/sysconfig/clock 修改时区配置文件ZONE="America/Ne ...
- 【突发问题】昨天更新了OS X EI Capitan 出现了Cocoapods的 pod :command not found
然后我百度:http://www.jianshu.com/p/6ff1903c3f11 果真,我想想然后执行了作者说的第一步,删除本地Cocoapods文件,然后发现我执行不了接下来的几个步骤了.所以 ...
- Git创建ssh-key
打开git bash界面,输入: ssh-keygen -t rsa -C "yourname@email.com" 一路回车,后续保持默认值即可. 把C:\users\yourn ...
- Linux防火墙:iptables禁IP与解封IP常用命令
在Linux服务器被攻击的时候,有的时候会有几个主力IP.如果能拒绝掉这几个IP的攻击的话,会大大减轻服务器的压力,说不定服务器就能恢复正常了. 在Linux下封停IP,有封杀网段和封杀单个IP两种形 ...
- GUI1_综合介绍
最终比较,选择pyqt用于GUI开发 https://pythonspot.com/en/gui/ 图形化界面可以使用PyQt5, PyQt4, wxPython or Tk.模板 Graphical ...
- Runner站立会议07
开会时间:21.10~21.30 地点:基教负一 今天做了什么:看网上下载的日历代码 明天准备做什么:继续看代码 遇到的困难:下载的代码有很多看不懂的地方,很多包.函数等都不知道 会议图: 燃尽图:
- VC----Class Style类风格和窗口风格
CS_BYTEALIGNCLIENT:以字节边界来对齐窗口客户区,这个风格会影响 窗口 的宽度和水平位置.实际上没有看到效果. CS_BYTEALIGNWINDOW:以字节边界来对齐窗口,这个风格会影 ...
- PetaPoco 使用总结(二)
接着上一篇,上一篇主要介绍了PetaPoco 基本情况,优缺点和基本的查询功能,所以这篇主要介绍的是PetaPoco 的增,删,改等功能.PetaPoco提供了完整的增,删,改,查功能.是代替SqlH ...
- C#根据时间产生有序的GUID编码
public static Guid GenerateGuid() { byte[] guidArray = Guid.NewGuid().ToByteArray(); , , ); DateTime ...
- maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)
我们知道,maven的依赖关系是有传递性的.如:A-->B,B-->C.但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A的依赖.在maven的依赖管理中,有两种方式可以对依赖 ...