zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    Graphics Card Notes | 烧卡日记(显卡常识笔记)
    PyCharm Notes | PyCharm 使用笔记(远程访问服务器code配置指南)
    Python Notes | Python 备忘笔记
    conda清华镜像(TUNA)使用指南
    vim 操作手册
    WebNotes(PHP、css、JavaScript等)
    Linux网络配置:设置IP地址、网关DNS、主机名
    Linux挂载:VMware tools for Linux安装
    Linux磁盘分区的理解
    什么是Python?Python的设计哲学?如何获取/升级Python?
  • 原文地址:https://www.cnblogs.com/fionacai/p/5710395.html
Copyright © 2011-2022 走看看