CREATE DATABASE; USE DATABASE; CREATE TABLE INFORMATION ( 编号 int, 员工工号 varchar(10), 员工姓名 VARCHAR(10), 性别 CHAR(1), 年龄 TINYINT, 身份证号 CHAR(18), 入职时间 DATA )
添加
1
ALTER TABLE 表名ADD 字段名 类型(长度) COMMENT 注释;//alter是改变!
案例
为emp表增加一个新字段nickname,类型为varchar(20)
修改
1 2 3 4
//修改数据类型 ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);//modify也是修改 //修改字段名和数据类型 ALTER TABLE 表名 CHANGE 旧名 新名 类型(长度) COMMENT 注释;
案例
将emp表的nickname改成username,类型为varchar(30)
删除字段
1
ALTER TABLE 表名 DROP 字段名;
案例
将emp表的username删除
修改表名
1
ALTER TABLE 表名 RENAME TO 新表名;
案例
将emp表的表名修改为employee
删除表
1
DROP TABLE IF EXISTS 表名;//IF EXISTS可以不加
删除指定表,并重新创建该表
1
TRUNCATE TABLE 表名;//truncate删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//内容回顾DDL SHOW DATABASES; CREAT DATABASE 数据库名; USE 数据库名; SELECT DATABASE(); DROP DATABASE 数据库名;
SHOW TABLES; CREAT TABLE 表名 ();//切记表名得和内部元素一同创建,不然就是一个空表 DESC 表名; SHOW CREAT TABLE 表名;//有的时候你得说清楚是什么表,所以得加表名,而CREAT对象很多 //所以有的时候又得说清楚CREAT DATABASE/TABLE ALTER TABLE ADD/DROP/CHANGE/MODIFY/RENAME TO DROP TABLE 表名;
==但是这样子在命令行里操作不直观,所以可以可视化处理,这样子可以清晰且提高效率==
图形化界面
Sqlyog/==DataGrip==/Navicat
DataGrip里创建数据库schema和database一样
DML
增加(INSERT)
修改(UPDATE)
删除(DELETE)
添加数据
给指定字段添加数据
1 2 3 4 5 6 7
INSERT INTO 表名 (字段1,字段2,...)VALUES(值1,值2,....); //如果是给所有字段添加数据,那么就直接不写(字段1,字段2,...) //如果要批量添加:VALUES(值1,值2,....),(值1,值2,....),(值1,值2,....); //在value后添加”,“隔开。 //*可不可以表示泛呢?好像没法。 //实质上也是键值对,所以要对应 //字符串和日期本质都是字符串,所以要放在引号里
修改数据
1 2
UPDATE 表名 SET 字段名1=值1,字段名2=值2,... WHERE 条件; //没有条件就是修改整张表!!!所以修改一个那么就得加条件,别一个不小心把整张表都改了
删除数据
1 2 3
DELETE FROM 表名 WHERE 条件; //没有条件就是删除整张表的数据 //DELETE不能只删除某一个字段的值(可以用update)
1 2 3 4
//内容回顾 INSERT INTO 表名 (字段1,字段2,...)VALUES(值1,值2,....); UPDATE 表名 SET 字段名1=值1,字段名2=值2,... WHERE 条件; DELETE FROM 表名 WHERE 条件;
DQL
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
基本查询
条件查询
聚合函数
分组查询
排序查询
分页查询
查询//返回的是一个表!按列返回
所有查询的本质就是
1
SELECT 字段列表 FROM 表名;
基本查询
1 2 3 4 5
//查询返回多个字段 SELECT 字段1 AS 别名1,字段2,字段3... FROM 表名;//AS可以省略 SELECT * FROM 表名;//*表泛,可以给字段设别名 //去除重复记录 SELECT DISTINCT 字段列表 FROM 表名;//DISTINCT就是个去重操作
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
while循环中 left 和 right 的关系,到底是 left <= right 还是 left < right 迭代过程中 middle 和 right 的关系,到底是 right = middle - 1 还是 right = middle 3.1 正向写法(正确演示) 第一种写法:每次查找的区间在[left, right](左闭右闭区间),根据查找区间的定义(左闭右闭区间),就决定了后续的代码应该怎么写才能对。因为定义 target 在[left, right]区间,所以有如下两点:
#include<iostream> usingnamespace std; longlongp(int d, int m) { longlong r = 1; while (m) {
if (m & 1) { // 判断 m 的当前位是否为 1 r *= d; // 如果是 1,就将 d 乘入结果 r } m = m >> 1; d = d * d; // 将基数 d 平方 // 右移 m,处理下一个二进制位 } return r; } intmain() { cout<<p(3, 190); cin.get(); }//快速幂
#include<iostream> usingnamespace std; longlongp(int d, int m,int t) { longlong r = 1; while (m) {
if (m & 1) { // 判断 m 的当前位是否为 1 r *= d%t; // 如果是 1,就将 d 乘入结果 r } m = m >> 1; d = (d%t) * (d%t); // 将基数 d 平方 // 右移 m,处理下一个二进制位 }