sqlServer-基础笔记

增,删,改,查 这是核心
数据库 数据表(有好几个) 行—记录 列—字段 数据操作 创建数据库 语法 create database 数据库名称; (关键字建议大写) 规范化编码风格 编码 中文

1
utf8\_general\_ci  排序规则
1
ceate datebase 数据库名称 character  set utf8; 问题:数据库已存在 报错#1007 解决方案:
1
ceate datebase if not exists 数据库名称  character  set utf8;

数据库名称不可以是全数字 查看数据库

1
show databases;

修改数据库

1
alter datebase 数据库名称 character  set utf8;

删除某列

使用 drop column

1
alter table synclogs\_backup drop column Synclogs\_id;

添加列 add

1
alter table synclogs\_backup add   Synclogs\_id nvarchar(36)

删除数据库

1
2
drop datebase 数据库名称;
drop if exists datebase 数据库名称;

1008 错误 数据库不存在

切换数据库(命令行操作会使用) use 数据库名称 ; //表示操作哪一个 数据表操作 创建数据表

1
2
3
4
5
create table 表名称 (
字段名称  数据类型,
字段名称  数据类型,
.....
);

数据表数据类型:

数值 Number
int–整型
float/double–浮点型
decimal –严格定义(最后得到准确值)
感觉跟C语言差不多

………… 日期加时间类型Datayear time 常用后两种 date 日期 datatime 日期时间 timestamp 时间戳(精确到毫秒) 唯一性 字符串类型String char –长度固定字符串; varchar–长度可变的字符串;(使用多,尽量大一点); 约束(完整性约束) 主键约束,唯一不可重复

primary key

主键自增约束

1
2
auto_increment
P\_Id int NOT NULL AUTO\_INCREMENT,  (约束条件使用空格隔开就好)

案例

1
2
3
4
5
6
7
create table jkj_user(
userid  INT primary key auto_increment,         //标识 唯一  不可重复
username varchar(50),
pwd varchar(50),
age INT,
email varchar(100)            //100个字节
);

约束种类

mysql含有6种约束条件: [Oracle同mysql]—–我感觉就是列级约束,都是在字段

后面加的 主键约束 唯一约束 检查性约束 非空约束 默认约束 外键约束 1.主键约束:—非空且唯一 格式: 字段名 字段类型 primary key 条件: 通常要求主键字段为非必须字段,只是作为数据的标识 类型: 普通主键[主键由一个字段组成] 复合主键[主键由2个或多个字段组成] 作用: 使用主键约束的字段,字段的值非空且唯一. 2.唯一约束: 格式: 字段名 字段类型 unique 作用; 使用唯一约束的字段,字段值必须唯一,不能重复. id int primary key, name varchar(20) unique, 3.检查性约束:—这个在SQLsever 好像不管用 格式: 字段名 字段类型 check(条件) 作用: 使用检查性约束的字段,字段值必须满足指定的条件. 说明: mysql中含有检查性约束,但是不强制执行.[Oracle中强制执行] 4.默认约束: 格式: 字段名 字段类型 default 默认值; 作用: 使用默认约束的字段,当字段没有被赋值时,系统自动赋予该字段默认值 sex char(2) default ‘男’, 5.非空约束; 格式: 字段名 字段类型 not null 作用; 使用该约束的字段,在添加或修改数据时,字段必须被赋值. 6.这个比较难,外键约束 alter table 从表名 add foreign key (外键字段名) reference 主表明(被引用字段); 创建的时候就约束

1
2
3
4
5
create table 表(
字段名:字段类型
字段名:..
foreign key (外键字段名) references 主表名 (被引用字段)
)

问题: 一个表中可以含有几个约束? N个 一个字段可以含有几个约束? N个 格式: 字段名 字段类型 约束1 约束2 …. name varchar(20) unique not null 一个表中可以含有几个主键? 一个表中可以含有0或1个主键 删除数据表 drop table 表名称 删除数据表: drop table 表名; drop table if exists 表名; // if exists 这个只是 SQLSever 的 删除数据库: drop database 数据库实例名; drop database if exists 数据库实例名; 修改数据表 alter table 表名称 其他语句; alter table 表名 add/(drop column) id 不做,删了重写 查看数据表(使用比较少) show tables; show databases; show 表名; DESC 表名称; –描述 discription ——————————————- DML 数据操作语言 增删改查 新增 (插入) insert into 表名 values(所有字段值) 主键自增,写成null insert into student(name,sex,age,address) values(“王五”,”男”,22,”大同 “);//括号是重点 扩展 union all 是sql内置关键字,表示合并结果集。(个人感觉这种方法比较好) 多条数据合并为一个结果集之后,再插入。 批量添加的方法

1
2
3
4
5
6
7
insert into student 
select 4,'王老五','女',60,7,'吃',9 union all
select 4,'王老五','女',60,7,'吃',9 union all
select 4,'王老五','女',60,7,'吃',9 union all
select 4,'王老五','女',60,7,'吃',9 union all
select 4,'王老五','女',60,7,'吃',9 union all
select 4,'王老五','女',60,7,'吃',9

使用 insert int 表名 values() 只可以添加 一条数据,不好使 案例

1
2
3
4
5
6
insert into jkj_user values(
NULL,'张无忌',
'123456',
'18',
'zwj@qq.com'
);

空字符串不是null

and –&&
or –||
not ==!
between and 位于两值之间(包含 边界的) 使用>= 和<= 来表示
in(值1,值2) 字段=值1||字段等于值二 in表示多个值

排序查询的实现 语法

select * 表名 order by age(字段)[ASC/DESC]
默认了从小到大排序,正序排列 (ASC)
倒序 –DESC

模糊查询

like
where email like ‘%@qq.com’; %任意值 _ 匹配一个值
select from * form 表名 where email like ‘%@qq.com’;

小案例

1
2
3
4
5
6
7
8
create database mydb;
create table t1(
id int,
name varchar(20),
sex char(2),
age int,
address varchar(30)
);

mysql> desc t1;
+———+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(30) | YES | | NULL | |
+———+————-+——+—–+———+——-+

1
2
3
4
5
insert into t1 values(1,'张三','男',23,'大同');
insert into t1(name,sex) values('李四','女');

update t1 set age=22;
update t1 set id=2,address='北京' where sex='女';
  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~