一、操纵表

1、表的关键信息

2、更新表名

更新表名:使用RENAME TABLE关键字。语法如下:
RENAME TABLE 旧表名 TO 新表名; 比如,生产环境投产前备份teacher表,使用如下语句:
RENAME TABLE teacher TO teacher_bak;

3、更新字段名

更新字段名:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名; 比如,修改teacher_name的字段名为teacher_nm,使用如下语句:
ALTER TABLE teacher RENAME COLUMN teacher_name TO teacher_nm;

4、更新字段类型

更新字段类型:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ALTER COLUMN 字段名 新字段类型; 比如,修改teacher_name的类型为VARCHAR(100),使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name varchar(100); 在更改类型的时候,更改前的类型和更改后的类型一定要能显示转换,否则会造成数据丢失。

5、更新字段NULL值

更新字段类型时,可同时设置字段NULL值、默认值,也是使用ALTER TABLE关键字,语法是一样的。

比如,修改teacher_name的类型为VARCHAR(100) NULL,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name varchar(100) null DEFAULT ‘’;

6、更新字段默认值

更新字段类型时,也可同时设置字段默认值,语法是一样的。

比如,修改teacher_name的类型为VARCHAR(100) ,默认值为’’,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name varchar(100) default ‘’; 更新字段默认值:也可使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默认值; 比如,修改teacher_name的默认值为’未知’,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name set default ‘未知’; 删除字段默认值:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT; 比如,删除teacher_name的默认值,使用如下语句:
ALTER TABLE teacher ALTER COLUMN teacher_name drop default;

7、更新主键字段

设置主键:如果表已存在,但没有定义主键字段,可使用ALTER TABLE关键字设置主键。语法如下:
ALTER TABLE 表名 ADD PRIMARY KEY (主键字段列表); 比如,将teacher表的teacher_name和gender两个字段设置为主键,使用如下语句:
ALTER TABLE teacher ADD PRIMARY KEY (teacher_name,gender); 删除主键字段:如果表中已定义主键字段,可使用ALTER TABLE关键字删除主键。语法如下:
ALTER TABLE 表名 DROP PRIMARY KEY; 比如,将teacher表的主键删除,使用如下语句:
ALTER TABLE teacher DROP PRIMARY KEY; 更新主键字段:如果表中已定义主键字段,但想修改主键字段,比如说假如现在teache表的主键字段是teacher_name和gender,
现在想修改主键字段为teacher_id,也是可以的。

8、新增、删除字段

新增字段:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 ADD COLUMN 新字段名 字段类型及其他属性; 比如,在teache表中新增年龄字段age,使用如下语句:
ALTER TABLE teacher ADD COLUMN age int not null default 0; 删除字段:使用ALTER TABLE关键字。语法如下:
ALTER TABLE 表名 DROP COLUMN 字段名; 比如,在teache表中删除年龄字段age,使用如下语句:
ALTER TABLE teacher DROP COLUMN age;

9、删除表

删除表:使用DROP TABLE关键字。语法如下:
DROP TABLE 表名; 比如,删除teacher表,使用如下语句:
DROP TABLE teacher;

二、插入数据

1、建表

CREATE TABLE teacher (
teacher_id VARCHAR(50) NOT NULL,
teacher_name VARCHAR(100) NOT NULL DEFAULT '未知',
gender VARCHAR(10),
PRIMARY KEY ( teacher_id)
);

2、插入整行字段

插入整行字段:关键字INSERT INTO
INSERT INTO 表名 VALUES (?,?,?,?); 假如需要向teacher表中插入两条数据:
#值的顺序与表中的字段顺序必须一致!不太安全;
INSERT INTO teacher VALUES ('T0001','高齐妍','男');
INSERT INTO teacher VALUES ('T0002','李红','女'); #安全
INSERT INTO teacher(teacher_id,teacher_name,gender) VALUES ('T0001','高齐妍','男');

3、插入部分字段

INSERT INTO teacher(teacher_id,teacher_name,gender) VALUES ('T0003', '李一萱',NULL);

#这种要求性别字段可为NULL
INSERT INTO teacher(teacher_id,teacher_name) VALUES ('T0003', '李一萱'); #这要求teacher_name字段设置了默认值
INSERT INTO teacher(teacher_id) VALUES ('T0004');

4、一次插入多行

INSERT INTO teacher VALUES ('T0001','高齐妍','男'),('T0002','李红','女');

注意:
 建议一条SQL语句插入的条数在1000条以下;
 还受限于数据库支持的单条SQL语句的长度;

5、借助其他表数据插入

INSERT INTO teacher SELECT * FROM teacher;

克隆表:
SELECT * INTO teacher_bak FROM teacher; CREATE TABLE teacher_bak AS SELECT * FROM teacher;

三、查询

1、建表

##建表
CREATE TABLE `student` (
`student_id` varchar(50) NOT NULL COMMENT '学生编号',
`student_name` varchar(100) NOT NULL DEFAULT '' COMMENT '学生姓名',
`gender` varchar(10) NOT NULL DEFAULT '' COMMENT '性别',
`birth_day` date NOT NULL COMMENT '生日',
`age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',
`class_id` varchar(50) NOT NULL DEFAULT '' COMMENT '班级编号',
`score` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '数学成绩',
`teacher_id` varchar(20) DEFAULT NULL COMMENT '老师编号'
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='学生'; ##插入部分数据
INSERT INTO `student` VALUES ('S20180001','方东美','女','2006-02-04',12,'G0101',80.65,'T0003'),
('S20180002','方香','女','2008-09-28',10,'G0101',75.48,NULL),
('S20180003','高紫菡','男','2006-07-22',12,'G0101',74.46,'T0003'),
('S20180004','胡未迟','男','2007-07-25',11,'G0101',51.27,'T0003'),
('S20180005','李咏颐','男','2007-03-16',11,'G0101',88.84,'T0003'),
('S20180006','吴灏潇','男','2008-04-19',10,'G0101',69.93,NULL),
('S20180007','吴明鸿','男','2007-11-18',11,'G0101',63.65,'T0003'),
('S20180008','吴鹏宇','男','2007-08-24',11,'G0101',84.69,'T0003'),
('S20180009','吴少雄','男','2007-08-04',11,'G0101',76.36,'T0003'),
('S20180010','习芬飘','女','2005-01-27',13,'G0101',83.42,'T0003'),
('S20180011','俞倚琳','女','2007-07-07',11,'G0101',97.38,'T0003'),
('S20180012','张琼雪','女','2006-06-12',12,'G0101',81.01,'T0003');

2、查询部分列

SELECT 字段列表 FROM 表名;

SELECT student_id,student_name,gender FROM student;

3、查询所有列

第一种写法(推荐),字段顺序可以变换:
SELECT teacher_id,teacher_name,gender,age,class_id FROM student; 第二种写法:
SELECT * FROM student;

4、排序返回结果

将查询结果排序后展示:关键字ORDER BY … [ASC/DESC]
SELECT 字段列表 FROM 表名
ORDER BY 字段1 [ASC/DESC],字段2 [ASC/DESC]…; SELECT student_id,student_name,age FROM student ORDER BY age ASC;
| | (等价)
SELECT student_id,student_name,age FROM student ORDER BY age; ##可以指定多个字段排序
SELECT student_id,student_name,age FROM student ORDER BY age ASC,student_name ASC; ##按列位置排序
SELECT student_id,student_name,age FROM student ORDER BY age ASC,student_name ASC;
| | (等价)
SELECT student_id,student_name,age FROM student ORDER BY 3 ASC,2 ASC;

5、限制返回结果

###
返回前几行:
关键字TOP、LIMIT
mysql没有TOP 两种写法:
 SELECT TOP 10 字段列表 FROM 表名;
 SELECT 字段列表 FROM 表名 LIMIT 10; 一般在两种情况下会使用:
 表数据太多,想随便查看一下表中的数据;
 一般与ORDER BY关键字配合使用,返回按某些字段排序后的前几行; ###
返回中间几行:
关键字LIMIT M OFFSET N(从第N行开始,返回M行记录) 两种写法:
 SELECT 字段列表 FROM 表名 LIMIT M OFFSET N;
 SELECT 字段列表 FROM 表名 LIMIT N,M; 这里的第N行,是从0开始算起的;
一般与ORDER BY关键字配合使用,按M行为一页,返回某一个分页的记录; ###
返回中间几行:
关键字LIMIT M OFFSET N(从第N行开始,返回M行记录) SELECT 字段列表 FROM 表名 LIMIT 0,10;
| | (等价)
SELECT 字段列表 FROM 表名 LIMIT 10; ###
返回后几行:
关键字TOP、LIMIT、ORDER BY SQL语句中,没有返回后几行的专用写法,一般转换为按返回前几行的相
反方式排序后,再返回前几行。使用这种方式变相的返回后几行。 第1步:先按学生编号倒序排序;
第2步:返回排序后的前5行;
第3步:将前5行数据升序排序; SELECT * FROM
(
SELECT TOP 5 *
FROM student
ORDER BY student_id DESC
)a
ORDER BY student_id ASC

SQL基础-操纵表及插入、查询的更多相关文章

  1. SQL语句 在一个表中插入新字段

    SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter ...

  2. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  3. sql 所有数据表中 插入字段

    declare @tablename varchar(200)declare @sql varchar(2000)declare cur_t cursor forselect name from sy ...

  4. SQL基础-连接表

    一.连接表 1.SQL JOIN 忘记在哪保存的某位网友的图,先明白SQL JOIN, 2.关于笛卡尔积 笛卡尔积: 两个集合的乘积 重新建student表和teacher表: student表: C ...

  5. SQL 多个表之间联合查询

    非常少用join,这次学学,并备忘两篇文章! 转自:http://hcx-2008.javaeye.com/blog/285661 连接查询 通过连接运算符能够实现多个表查询.连接是关系数据库模型的主 ...

  6. Sql Server根据表名生成查询的存储过程(查询条件可选)

    static void Main(string[] args) { string 表名 = "water_emstime"; string sql = "exec Get ...

  7. SQL基础-建表

    一.建表 1.创建表的两种方式 *客户端工具 *SQL语句 2.使用SQL语句创建表 表名和字段名不能使用中文:(一般为字母开头,字母.数字.下划线组成的字符串): CREATE TABLE关键字后跟 ...

  8. sql把一个表数据插入到另一张表

    把一个表数据插入到另一张表 insert into tableB (field1,field2,field3,field4) select field1,field2,field3,'val4' fr ...

  9. 6-02使用SQL语句向表中插入数据

    插入语句的语法: INSERT INTO 表() VALUES(值列表) 注意事项: 1:每次插入一行数据,不能只插入半行或几列数据. 2:每一个数据值的数据类型.精度和小数位数必须与相应的列匹配. ...

随机推荐

  1. MongoDB和Java(4):Spring Data整合MongoDB(XML配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  2. 练习bloc , 动画

    有点意思, import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; main()=>runApp ...

  3. Matlab适配器模式

    适配器模式是连接两个不兼容接口的桥梁,主要分为三种:类适配器.对象适配器以及接口适配器,本文根据https://blog.csdn.net/u012359453/article/details/791 ...

  4. C/C++ 关于数组和指针的总结

    1.数组的声明形如a[d],其中a是数组的名字,d是数组的维度,编译的时候数组的维度应该是已知的,所以维度d必须是一个常量.如果要定义一个不知道元素个数的以为数组,那么请使用vector容器: uns ...

  5. 【函数】wm_concat包的订制

     [函数]wm_concat包的订制   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道 ...

  6. java实现mysql数据备份

    /** * @param hostIP ip地址,可以是本机也可以是远程 * @param userName 数据库的用户名 * @param password 数据库的密码 * @param sav ...

  7. Parity game(带权并查集+离散化)

    题目链接  //kuangbin 题意: 现在你和你的朋友正在玩一种游戏. 你的朋友写下一串0和1的序列,然后你选择其中一串子序列(如[3,5])并且问他这个序列是包含奇数个1还是偶数个1(和是奇数还 ...

  8. 详细点的Mysql主从同步

    .说明 此操作文档,如果在master机器已开启bin-log及设定好server-id的情况下,可以不锁表,不停机的实现master-slave同步.这一同步可以将master上已有数据同步到sla ...

  9. Kotlin异常与Java异常的区别及注解详解

    Kotlin异常与Java异常的区别: throw的Kotlin中是个表达式,这样我们可以将throw作为Elvis表达式[val test = aa ?: bb,这样的则为Elvis表达式,表示如果 ...

  10. 在命令行中执行kms命令激活Microsoft Office 2010

    激活office2010的命令是什么?激活office2010除了使用office2010激活工具之外,还可以使用kms命令来激活office2010,但是office2010激活命令还需考虑32位或 ...