MySQL学习笔记之 SQL 基础

sql主要分为三类:DDL(data definition Language 数据库定义语句) 、DML(data manipulation language 数据库操纵语句)、DCL(data control language 数据库空中孤语句)。

  • DDL

1.展示系统中的所有数据库

show databases;

2.创建数据库

create database 数据库名;

3.使用数据库

use 数据库名;

4.删除数据库

drop database 数据库名

5.显示数据库中所有表

show tables;(首先你要先使用你要显示的表所在的数据库)

6.创建表

create table 表名( 列名1 类型1,列名2 列类型2...  列名n 列类型n);

7.查看表的信息

desc 表名;

create table set1(s set('a','b','c','d','e','f'));

虽然 desc 可查看表的定义,但是其输出信息不够全面,下面的命令可以看你表的定义的sql 语句--

8.show create table 表名 \g;

9.删除表

drop table 表名;

10.修改表

  • alter table 表名 modify 列名 列的新定义;//修改表
  • alter table 表名 add 列名 列类型; //增加表的字段
  • alter table 表名 drop column 列名;//删除表的字段
  • alter table 表名 change  旧列名 新列名;//修改列名
  • alter table 表名 add 新列名 after 排在某个旧列名之后的列名;
  • alter table 表名 modify 列名 列类型 first;//将某列放在最前面
  • alter table 表名 rename 新表名;//修改表名
 
 
create table set1(s set('a','b','c','d','e','f'));
insert into set1 values('a,b'),('a,b,c'),('a,b,a'),('a,b,a,c'),('1');
select * from set1;
drop table set1;
create table set1(s set('a','b','c','d','e','f'));
insert into set1 values('a,b'),('a,b,c'),('a,b,a'),('a,b,a,c'),('1');
desc set1;
show create table set1 \g;
alter table set1 modify s set('a','b','c','d','e','f','1','2');
alter table set1 add id int(4) first;
alter table set1 add name varchar(24) first;
alter table set1 drop column name ;
alter table set1 change s s1 set('a','b','c','d','e','f','1');
alter table set1 add name varchar(24) after id;
desc set1;
alter table set1 modify name varchar(24) first;
desc set1;
alter table set1 rename se;

  • DML

  • 插入数据:

insert into 表名(列名1,列名2...列名n)values(value1,value2...valuen); 这里也可以不列举列名,但是value 的值必须与表的列一一对应;

 
 
create table sonador(id int(8) auto_increment primary key not null, name varchar(20) not null,grade int(8) not null default 0);
//default 表示默认值 auto_increment : 自增长
insert into sonador values(1,'aimme',93);
insert into sonador(name,grade) values('alice',95);
insert into sonador(name) values('andy');
select* from sonador;


一次性插入多条数据

insert into 表名(列名1,列名2,列名3...列名n)values

(value1,value2,value3... valuen),

(value11,value12,value13... value1n)

...

(valuen1,valuen2,valuen3... valuenn);

create table sonador(id int(8) auto_increment primary key not null, name varchar(20) not null,grade int(8) not null default 0);
insert into sonador values(1,'aimme',93);
insert into sonador(name,grade) values('alice',95);
insert into sonador(name) values('andy');
insert into sonador(name,grade) values('a',95),('b',99),('c',100),('d',89),('e',85),('f',88);
select* from sonador;

运行结果如下:

  • 更新记录

update 表名 set field1=value1,field2=value2,... fieldn=valuen[where conidition];//where 条件语句,以后细说

update sonador set name='duodudo' where id=4;

在mysql中支持同时更新多表数据,语法如下:

update t1,t2,t3...,tn set t1.field1=value1,t2.field2=value2,t3.field3=value3...,t2.fieldn=valuen[where conidition];//where 条件语句,以后细说

create table sonador(id int(8) auto_increment primary key not null, name varchar(20) not null,grade int(8) not null default 0);
insert into sonador values(1,'aimme',93);
insert into sonador(name,grade) values('alice',95);
insert into sonador(name) values('andy');
insert into sonador(name,grade) values('a',95),('b',99),('c',100),('d',89),('e',85),('f',88);
update sonador set name='duodudo' where id=4;
create table sonador1(id int(8) auto_increment primary key not null, name varchar(20) not null,grade int(8) not null default 0);
insert into sonador1(name,grade) values('a',95),('b',99),('c',100),('d',89),('e',85),('f',88);
update sonador,sonador1 set sonador.name='lily',sonador1.name='lisa' where sonador.id =2 and sonador1.id=1;
select* from sonador;
select* from sonador1;

多表同时更新数据多用在更具一个表字段动态更新另一个表字段

  • 删除表数据

delete from 表名[where condition];

create table sonador(id int(8) auto_increment primary key not null, name varchar(20) not null,grade int(8) not null default 0);
insert into sonador values(1,'aimme',93);
insert into sonador(name,grade) values('alice',95);
insert into sonador(name) values('andy');
insert into sonador(name,grade) values('a',95),('b',99),('c',100),('d',89),('e',85),('f',88);
update sonador set name='duodudo' where id=4;
delete from sonador where id=3;
select* from sonador;

与update一样,删除数据支持同时删除多表数据

delete from t1,t2,t3...tn [where  codition ];

CREATE TABLE student(id INT(8) AUTO_INCREMENT PRIMARY KEY NOT NULL, NAME VARCHAR(20) NOT NULL,grade INT(8) NOT NULL DEFAULT 0,dept INT(5) NOT NULL);
CREATE TABLE class(dept INT(5),deptname VARCHAR(18));
INSERT INTO student(NAME,grade,dept) VALUES('a',95,11),('b',99,12),('c',100,10),('d',89,11),('e',85,15),('f',88,14);
INSERT INTO class VALUES(10,'vocol'),(11,'cleaning'),(12,'grocery'),(14,'food'),(15,'冷冻');
SELECT* FROM student;
SELECT* FROM class;

同时删除表中dept=10的数据:

DELETE a ,b FROM student a ,class b WHERE a.`dept`=b.`dept`AND a.`dept`= 10 ; //a b 是表的别名,如果from后用表的别名,delete后面也要用相应的别名
select* from student;
select* from class;

  • 查询记录

select * from 表名 [where condition];//最简单的查询,列出表中所有数据--即select * from 表名;

 1.查询不重复记录---使用distinct关键字

select distinct 列名1 from 表名;

create table student(id int(8) auto_increment primary key not null, name varchar(20) not null,grade int(8) not null default 0,dept int(5) not null);
create table class(dept int(5),deptname varchar(18));
insert into student(name,grade,dept) values('a',95,11),('b',99,12),('c',100,10),('d',89,11),('e',85,15),('f',88,14);
insert into class values(10,'vocol'),(11,'cleaning'),(12,'grocery'),(14,'food'),(15,'冷冻');
SELECT DISTINCT dept FROM student;

2.排序和限制

排序:order by 关键字

select * from 表名 [where condition] order by field1 desc(降序)/asc (升序),order by field2  desc(降序)/asc (升序) ...order by fieldn  desc(降序)/asc (升序); //此种排序以第一个排序为先,值相同比较第二个字段,以此类推。若都相同则是无序序列。

对于排序后的记录,如果只希望展示一部分,而不是全部,这时就可以使用limit 关键字。

select * from 表名 [where condition] order by field1 desc(降序)/asc (升序) [ limit offset_start (起始偏移量), row_count(显示的行数)];

SELECT * FROM student ORDER BY grade DESC LIMIT 1,4 ;

猜你喜欢

转载自blog.csdn.net/fengkaungdewoniu/article/details/79954380