mysql基础(一)_mysql相关命令&数据类型

1 mysql的相关命令

启动服务: net start mysql
关闭服务: net stop mysql

启动和关闭服务需要在管理员身份运行终端
登录时报10061错误时,说明服务为启动

查看mysql版本: mysql --version
登陆mysql: 两种常见的方式:1. mysql -uroot -p(密码)
2. mysql -uroot -p 回车
输出框提示:password:

后者密码隐藏输入,前者暴露

远程登陆数据库: mysql –hip地址 -P3306 –uroot –p //主机名 端口号 用户名 密码
显示所有数据库: show databases;
选定数据库: use 数据库名称;
显示当前数据库中所有的表: show tables;
显式指定数据库中的所有表: show tables from 数据库名称;
显示命令清单: \h
显示mysql状态信息: status
退出mysql: 三种方式:1. exit 2. quit 3.\q

2 sql语句规范

sql语句无大小写之分,但是我们习惯用大写表示其关键字,小写表示标识符
SQL(Structured Query Language)
DDL(Data Definition Language数据定义语言):用于创建数据库,数据库对象,定义其列
常见命令:CREATE、DORP、ALTER
DCL(Data Control Language数据控制语言):用来控制存储许可,存储权限等
常见命令:GRANT,REVOKE等
DML(Data Manipulation Language数据操作语言):查询,插入,删除,修改数据库中的数据
常见命令:SELECT,INSERT,UPDATE,DELETE

创建数据库

  1. create database dbname [数据库选项]; //创建数据库

注意:数据库的名称可以是中文的,有些特殊的名称需要加上· ·,如·123·,

  1. show create database dbname; //查看创建数据库的SQL语句
    在这里插入图片描述
  2. alter database dbname character set gbk //更改字符集
  3. create user username identified by ‘123456’;//创建数据库 密码为123456
  4. drop user username ;//删除用户,select user(); //查看当前用户
  5. grant select,insert,update,delete on . to username @’%’ identified by ‘123456’;//创建具有权限的用户
  6. grant all privileges on . to username@’%’;//赋予权限 ,但没有Grant_priv权限
  7. revoke all privileges on . from username@’%’ ;//回收权限
  8. SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘newpass’);//修改密码
  9. mysqladmin -u root -poldpass password newpass
  10. mysqladmin -uabc -p123456 password 123(要有权限才可以修改)

表操作

use student; //使用数据库

  1. create table t_emp(empno int, ename varchar(20), esex char(2));//在数据库study中新建表t_emp;
  2. 对表列进行修改
    alter table t_emp modify ename varchar(30);
    alter table t_emp drop esex;
    alter table t_emp add esex char(2);
  3. 插入数据
    insert into t_emp(empno, ename, esex) values(1000, ‘tom’, ‘m’);
    insert into t_emp values(1000, ‘maggie’, ‘f’);
    insert into t_emp(empno, ename) values(1002, ‘john’);
    insert into t_emp(empno, ename, esex) values(1003, null, ‘m’);
    insert into t_emp values(1004, ‘张三’, ‘男’);
  4. 显示字符集
    show variables like ‘character_set%’;
  5. 修改字符集
    set names gbk;
  6. 删除表中某一项
    delete from t_emp where esex is null;
  7. 删除表中所有结构
    delete from t_emp;
  8. 显示表结构
    desc table;
  9. 查找表
    select * from table;
  10. 删除表
    drop table tablename ;

完整性约束

**主键:**约束表,插入表时必须有此元素,为主键的列不能重复

一个表中只能有一个主键或者一个复合主键

创建有主键的表:

  1. create table t_emp(empno int not null primary key, ename varchar(20), esex char(2));
  2. create table t_emp(empno int, ename varchar(20), esex char(2), primary key (empno,ename)); //复合主键

外键:
。。。。。

自定义完整性约束:

  • create table t_test1(id int auto_increment primary key, name varchar(30), age int default 20);//auto_increment必须是primary key

3 数据类型

在这里插入图片描述

数值:

  1. 4种整数类型的字节大小和作用范围
    在这里插入图片描述

zerofill 指定最小的宽度不足为零
unsigned 表示无符号

例子:
create table t_number(a tinyint, b tinyint unsigned);
insert into t_number values(100, 200); //正常a(-128到127) b(0到256)
insert into t_number values(-129, 200); //报错,越界
insert into t_number values(128, 200); //报错,越界
insert into t_number values(127, 200);//正常
insert into t_number values(127, -1);//报错,越界

  1. 浮点数表示:
    S:符号位
    E: 指数位
    M:尾数位
    单精度4个字节,32位,取值范围-3.402823466E+38~3.402823466E 精度6位
    双精度8个字节,64位,取值范围-1.7976931348623157E+308~1.7976931348623157E+308 精度17位

DOUBLE[(M,D) ] [UNSIGNED] [ZEROFILL]
M总位数,D是小数点后面的位数

DECIMAL[(M,D])] [UNSIGNED] [ZEROFILL]
M缺省是10,D缺省是0

decimal取值范围与double是一样的,但是有更高的精度。numeric是decimal的别名

例子:
create table t_number4(a float, b double);
insert into t_number4 values(12345678.12345, 12345678.12345);
insert into t_number4 values(12345678.12345, 123456789123456789.12345);
insert into t_number4 values(12345678.12345, 12345678912345.12345);

日期和时间类型:
在这里插入图片描述例子:
create table t_datetime(a datetime);
insert into t_datetime values(‘2014-01-15 10:10:10’);
insert into t_datetime values(‘9999-12-31 23:59:59’);
insert into t_datetime values(‘99-01-01 00:00:00’); //70-99 补上19
insert into t_datetime values(‘69-01-01 00:00:00’); //00到69补上20

create table t_timestamp(a timestamp);
insert into t_timestamp values(‘2014-01-15 10:10:10’);
insert into t_timestamp values(‘2038-01-19 03:14:07’);
insert into t_timestamp values(‘2038-01-19 03:14:08’);//能够插入 与时区有关
insert into t_timestamp values(‘2038-01-19 11:14:07’);
insert into t_timestamp values(‘2038-01-19 11:14:08’);//不能够插入

create table t_date(a date);
insert into t_date values(‘2012-01-01’);

create table t_time(a time);
insert into t_time values(‘23:12:12’);
insert into t_time values(‘823:12:12’);
insert into t_time values(‘3 23:12:12’);

create table t_year(a year);
insert into t_year values (2000);
insert into t_year values (‘2155’);
insert into t_year values (2156);

字符串类型:
在这里插入图片描述

char(M) 与varchar(M) – M表示字符数

  • CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。
  • VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)

binary(M)与varbinary(M)
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值

  • VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),而不是该类型的最大可能的大小。例如,VARCHAR(10)列可以容纳最大长度为10的字符串。实际存储需求是字符串(L)的长度,加上一个记录字符串长度的字节。对于字符串’abcd’,L是4,存储需要5个字节。
  • 对于CHAR、VARCHAR和TEXT类型,前面的表中的值L和M应解释为字符数目,并且列定义中的这些类型的长度表示字符数目。例如,要想保存一个TINYTEXT值需要L字符+ 1个字节

例子:
create table t_enum(sex enum(‘male’, ‘female’));
insert into t_enum values(‘male’);
insert into t_enum values(‘female’);
insert into t_enum values(‘other’);
insert into t_enum values(1);
select sex+0 from t_enum;

create table t_set(favourite set(‘dog’, ‘cat’, ‘bird’)); //按位存储
insert into t_set values(‘dog,cat’); //3
insert into t_set values(‘dog,bird’); //5
select favourite+0 from t_set;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值