SQL 入门

开启 停止SQL

启动:net start mysql
停止:net stop mysql

登录SQL

mysql -hlocalhost -uroot -p
mysql -h服务器地址 -u登录名 【-P端口号】 -p

创建数据库

create database db1 charset utf8;
create database [数据库名字] charset utf8[编码];

删除数据库

drop database if exists db;

    drop  database 【if  exists 】 数据库名;


#显示一个数据库的创建语句
>```
show create database db

数据库备份与恢复

mysqldump -hlocalhost -uroot -p db>c:/db.sql;
mysqldump -h服务器地址 -u登录名 -p 数据库名 > 文件名
恢复语法
mysql -h服务器地址 -u登录名 -p 数据库名 < 文件名

  • 这两个命令,都是在“没有登录mysql”的时候使用
  • 这两个命令,都是在“没有登录mysql”的时候使用
  • 通常,恢复,就是指恢复原来数据库中的所有表数据信息及其他信息,而数据库名可以是原来的名字或新的名字。

查看所有数据库

show databases; // 查看所有数据库


# 进入某一个数据库
> ```
use db; // 进入指定数据库

查看数据库中所有表

show tables;


# 字段类型
> mysql中,数据类型主要分3大类:数字型,字符型,时间型;
 - 数字型
    - 整数
       - #int 
       - #tinyint 
       - smallint 
       - mediumint
       - bigint
    - 小数
       - #float  // 浮点
       - Double // 浮点
       - #decimal //定点
 - 字符串
    - #set
    - #enum
    - blob
    - #text
    - #varchar
    - #char
 - 时间型
    - year
    - #timestamp
    - time
    - #date
    - #datatime

# 整数类型
> - 主要有
     - int,  tinyint,  smallint,  mediumint,bigint
- 整数类型所占空间(字节):
     - int:占4个字节,即32位;
     - tinyint:占1个字节,即8位;   最多能存储256个数字,默认范围是-128~127
     - bigint:占8个字节,即64位;
- 整数类型字段的设定形式
类型名【(M)】【unsigned】 【zerofill】
     - 1, M表示设定该整数的“显示长度” 即select输出的时候,123可能显示为000123(假设M为6)
     - unsigned用于设定该整数为“无符号数”,其实就是没有负数。
     - zerofill用于设定是否填充“0”到一个数字的左边,此时,需与设定的长度M配合使用。
     - 如果设置了zerofill,则自动也就表示同时具备了unsigned修饰

create table tab_int(
f1 int unsigned,
f2 tinyint zerofill,
f3 bigint(10) zerofill
);

insert into tab_int ( f1,f2,f3)
values (12,12,12);

select * from tab_int;


#小数类型  
>有3中:float, double,decimal
- float:单精度浮点型,使用4个字节存储数据,其精度大约只有6-7个有效数字数位;
-double:双精度浮点型,使用8个字节存储数据,其精度大约只有15个有效数字数位;
- decimal:定点小数类型,整数部分最长可以有65位,小数部分最长可以有30位。一般设置格式为:decimal(总位数,小数部分位数)

create table tab_xiaoshu(
f1 float,
f2 double,
f3 decimal(10,3) //表示总是位10位,小数位数为3位
);

insert into tab_xiaoshu ( f1,f2, f3)
values (123.456789,123.456789,123.456789)

// 字符类型
insert into tab_char_varchar( postcode,name)
values ('123456123456','abc')

select * from tab_char_varchar;

//enum set类型

create table tab_enum_set(
id int auto_increment primary key,
sex enum('男','女'),
fav set('篮球','排球',,'足球','中国足球')
);

insert into tab_enum_set( id,sex,fav)
values (null,'男','篮球');
insert into tab_enum_set( id,sex,fav)
values (null,1,1);

//date 时间类型

create table tab_time(
dt datetime,
d2 date,
t2 time,
y year,
ts timestamp/* 这个字段通常不用插入数据库*/
);

insert into tab_enum_set( dt ,d2,t2,y )
values (
'2015-7-8 10:9:10',
'2015-7-8',
'10:9:10',
'2015');

insert into tab_enum_set( dt ,d2,t2,y )
values (
now(),
now(),
now(),
'2015');

//字段设定形式

create table tab_shuxing(
id int aotu_increment primary key,
user_name varchar(20) not null unique key,
password varchar(48) not null,
age tinyint default 18,
email varchar(50) comment '电子邮箱'
);

insert into tab_shuxing(
id,
user_name,
password,
age,
email )
values (
1,
'aaaa',
'123',
18,
'[email protected]');

insert into tab_shuxing(
user_name,
password,
email )
values (
'aaaa',
'123',
'[email protected]');

// 索引创建

create table tab_suoyin(
id int aotu_increment ,
user_name varchar(20) ,
age int, /没有索引/
email varchar(50) comment '电子邮箱',
key(email), /普通索引/
primary key(id),/主键索引/
unique key(user_name),/唯一索引/
);

// 外键索引

外键表

create table tab_banji(
id int aotu_increment primary key ,
banjihao varchar(20) unique key comment '班级号',
banzhuren varchar(20) comment '班主任', /没有索引/
open_data data comment '开学日期',
);

主键表
create table tab_xuesheng(
stu_id int aotu_increment primary key ,
name varchar(20) comment '学生姓名',
age tinyint comment '年龄',
banji_id int comment '班级ID',
foreign key (banji_id) references tab_banji(id), /* 主键关联外键 foreign key [主键ID] references[外键表名][外键关联ID] */
open_data data comment '开学日期',
);

你可能感兴趣的:(SQL 入门)