基础语句速度入门

数据库

创建数据库 create database xxx;

显示数据库 show database;

删除数据库 drop database xxx;

使用数据库 use xxx;

创建表

create table xxx(

列名1 类型 约束(可有可无),

列名2 类型,

.......

);

列名不涉及关键字随意起,或者用` `引起来就行。

类型有以下几类:

  1. int 整型
  2. float,double 小数

decimal(m,n)也是小数,m表示这个数总的位数,n表示小数点后的位数,如3.14则m为3,n为2

相比之下decimal精度更高,但是运算更慢

3. char(n)是定长字符串,n为固定长度,以字符为单位

varchar(n)是变长字符串,n为最大长度

varchar会精确计算存储空间,因此更灵活,节省空间,但耗时更长,char一致性更优

4. blob 存放二进制资料

5. date 日期 格式("YYYY-MM-DD")Y为年,M为月,D为日

timestamp比date多了时分秒

约束有以下几类:

1. primary key 主键,唯一标识,不能重复

2. not null 非空

3. unique 列中所有值都是唯一值,不能出现重复

4. foregin key 外键,用于链接

5. check 检查列值是否符合要求

6. default n 默认值为n

7. auto_incroment 自动为每行分配唯一序号,常用于主键

8. on delete/on update 父表删除或更新时允许对子表做出对应修改

举例:

create table student (

id int primary key,

name varchar(8),

class int

);

展示表格 describe xxx;

删除表格 drop xxx;

更改表结构

alter table xxx add number int; 新增一列number

alter table xxx drop column class; 删除class列

插入数据

insert into xxx values(a,b,c); 整行插入,values后面需要包括所有属性值

insert into xxx(xx,yy) values(a,b); 部分插入,只插入部分属性值,其余默认为null

修改表中具体的值

举例子,比如有个同学老张,在2班,现在改为3班

update xxx

set class =3

where name ="老张";

假如把最后一行where去掉,就变成整表赋值了,整个表的class都为3

什么时候要加table、database什么时候不用呢?

简单来说就是创建、删除要写,展示不用,当我们要修改表的结构的时候要写,只是修改里面的值不用

复制数据表

1. like方式

create table if not exists xxx like yyy;

2. as方式

create table if not exists xxx as select * from yyy;

清空数据表

1. 整表删除

truncate table xxx;

2. 选择性删除

delete from xxx where .... ;

连接python

import mysql.connector

connection = mysql.connector.connect(

host='localhost',

port=' ',

user=' ',

password=' ' )

cursor.connection.cursor()

使用操作

cursor.execute('sql语句')

改变库时要

cursor.commit()

关闭

cursor.close()

connection.close()

SQL学习笔记 文章被收录于专栏

学习sql,当sql之神

全部评论

相关推荐

05-24 15:08
门头沟学院 Java
面试官很厉害,全程没有问我项目,就问八股。我很菜,八股没办法延申太多,答的都快红温了,感觉要寄,但是最后面试官说我体系搭的还行,心里还是有点小开心。----------------------------1.平时用的开发工具是什么?(不太懂问这个干啥)答:IDEA。(感觉可能想问我一下有没有用过cursor,但是本人确实没怎么用过,hh)2.MAVEN中<dependencies>和<dependencyManagement>有什么区别?3.LinkedList底层数据结构是什么?4.ArrayList和LinkedList都可以用get加一个数字来获取里面的一个元素的对吧?5.ArrayList和LinkedList都有10000个元素,它们都是用get(9999)获取元素,性能上有什么差别吗?6.如果对于存储了10000元素的LinkedList用get(9999)的话,时间复杂度是多少?7.平时开发的时候有没有遇到过OOM问题?8.JVM是如何判断一个对象能否被释放的?9.Object有哪些私有的方法?10.Object有哪些常见的方法?11.一个对象强转为String和使用String.valueOf有什么区别吗?12.String的String.valueOf的重载有多少个?实际上面试官应该是想问我重载的分类13. 有用过事务吗?你的事务用在什么地方,是为了解决什么问题呢?14. 一个方法里有多个读写操作,一开始没加事务注解,加了后性能有什么变化吗?(牛友们有更好的回答吗?我目前只想到这个,但是不太清除会出现在什么业务场景)答:有可能更快,有可能更慢。更快的情况是数据竞争不激烈,那么加了事务注解的方法只需一次网络IO,而不加事务的要多次网络IO。更慢的情况下是数据竞争激烈时,如果有很多事务提前抢占一些资源,导致加锁后其他的事务无法获取,等待的事务比较多,就会有可能会更慢。相比之下,一次一次提交的方法每次抢占的资源比较少,反而等待的事务比较少,可能更快。15. 现在有1w个员工,请你按照他们的年龄给他们排序,我们不关注他们原先的顺序,只要是按年龄顺序排序即可。创建一个大小为100的ArrayList<ArrayList<Employee>>,然后对应年龄的员工插入即可,最后遍历。时间复杂度应该是O(n)的。
查看14道真题和解析
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务