玖叶教程网

前端编程开发入门

测试自学入门课程必会,一文掌握高频实用SQL命令

基础SQL命令

一、 数据库相关的SQL

创建数据库 test

CREATE DATABASE test;


查看数据库创建是否成功

SHOW DATABASES;


删除库 test

DROP DATABASE test;


进入testdb6 库

USE testdb6 ;


二、 表相关的SQL

创建test和weisi表

CREATE TABLE test (

id INT(10) NOT NULL UNIQUE PRIMARY KEY ,

uname VARCHAR(20) NOT NULL ,

sex VARCHAR(4) ,

birth YEAR,

department VARCHAR(20) ,

address VARCHAR(50) ,

weisi VARCHAR(20)

);

weisi表

CREATE TABLE weisi (

id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,

stu_id INT(10) NOT NULL ,

c_name VARCHAR(20) ,

test VARCHAR(50) ,

grade INT(10)

);


显示所有表

SHOW TABLES;


复制test表结构,创建新表test2

注:可以有两种方式

CREATE TABLE test2 LIKE test ;

CREATE TABLE weisi2 AS SELECT * FROM weisi WHERE 2=1;


复制weisi表结构和数据,创建新表weisi3

CREATE TABLE weisi3 AS SELECT * FROM weisi


复制weisi表结构的 id,stu_id,test三个字段,创建新表weisi3

CREATE TABLE weisi3 AS SELECT id,stu_id,test FROM weisi WHERE 1<>1;


删除表 test2

DROP TABLE test2 ;


同时删除表weisi2和weisi3

DROP TABLE weisi2,weisi3 ;


修改test表,添加一个字段test6 (字符类型VARCHAR,长度100,不允许为空)

ALTER TABLE test ADD COLUMN test6 VARCHAR(100) NOT NULL;


查看表中的所有字段

DESC test


修改test表,删除字段test6

ALTER TABLE test DROP test6


把表weisi6,改名为weisi

RENAME TABLE weisi6 TO weisi;

ALTER TABLE weisi6 RENAME weisi;


把weisi表,改名为 weisi6

-- ALTER TABLE 旧表名 RENAME TO 新表名 ;

ALTER TABLE weisi RENAME TO weisi681 ;


修改表weisi,把字段test ,改为test6(字符类型varchar,长度160 )

ALTER TABLE weisi CHANGE test test6 VARCHAR(160);


在数据库 testdb2 ,创建weisi表,直接拷贝 test库weisi表的数据和结构 ;

CREATE TABLE testdb2.weisi AS SELECT * FROM test.weisi;

三、 表中数据相关的SQL

1)向表中插入数据

/*向表test插入数据

id = 1 ,uname = weisi ,weisi = 2020

*/

INSERT INTO test(id,uname,sex) VALUES(14,"weisi6",2);

/*

向表weisi插入数据

id=4,stu_id=11,c_name=weisi,grade=90

id=5,stu_id=12,c_name=lin,grade=100

id=6,stu_id=33,c_name=test,grade=20

*/

INSERT INTO weisi(id,stu_id,c_name,grade) VALUES(4,11,"weisi",90),(5,12,"lin",100),(6,33,"test",20);

SELECT * FROM weisi;


/*

造数据 ,把test表的所有数据,插入到 weisi表

字段关系

id 取id

stu_id 取id

c_name 取 uname

test 和 grade字段,给默认值 60

*/

INSERT INTO weisi(id,stu_id,c_name,test,grade) SELECT id,id,uname,60,60 FROM test ;



2)查询表中的数据

#查询test表 id = 1的内容

SELECT * FROM test WHERE id = 1;


#查找weisi表,名称(c_name)包含 “i” 的数据

SELECT * FROM weisi WHERE c_name LIKE '%i%' ;


#查找test表,id 包含 “1” 的数据,按id降序

SELECT * FROM test WHERE id LIKE '%1%' ORDER BY id DESC ;


#查找test表,id 包含 “1” 的数据 ,取id最大的三个

SELECT * FROM test WHERE id LIKE '%1%' ORDER BY id DESC LIMIT 3 ;


#找出weisi表中,分数最高的同学和分数;

SELECT c_name,grade AS "maxvalue" FROM weisi WHERE grade IN (SELECT MAX(grade) FROM weisi ) ;


#找出weisi表中,分数最低的同学和分数;

SELECT c_name,grade AS "minvalue" FROM weisi WHERE grade IN (SELECT MIN(grade) FROM weisi );


#找出test表,sex为空的的数据;

SELECT * FROM test WHERE sex IS NULL ;


#查询test表,有多少行数据

SELECT COUNT(sex) FROM test;


#查询test表,有性别类型数量(sex字段,去重)

SELECT COUNT(DISTINCT sex) FROM test;


#查找weisi表,成绩在80 - 100区间的学生 ;

SELECT * FROM weisi WHERE grade BETWEEN 80 AND 100;


#查找test表,id 为 2,11,12 的数据 ;

SELECT * FROM test WHERE id IN (2,11,12) ;


limit是mysql的语法

select * from table limit m,n

其中m是指记录开始的index,从0开始,表示第一条记录

n是指从第m+1条开始,取n条。

select * from tablename limit 2,4

即取出第3条至第6条,4条记录


#排名3 - 6名的学生 和分数 ;

SELECT c_name,grade FROM weisi ORDER BY grade DESC LIMIT 2,4;


#左连接

SELECT * FROM weisi a LEFT JOIN test b ON a.stu_id=b.id;


#内连接

SELECT * FROM weisi a INNER JOIN test b ON a.stu_id=b.id;


#右连接

SELECT * FROM weisi a RIGHT JOIN test b ON a.stu_id=b.id;


3)修改表中的数据

#更新test表,sex为空的,设置为0(性别未知)

UPDATE test SET sex = 0 WHERE sex IS NULL ;


4)删除表中的数据

#删除 test表,id大于12的数据 ;

DELETE FROM test WHERE id > 12;


#清空weisi表的数据

TRUNCATE TABLE weisi;

DELETE FROM weisi;

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言