当前位置:Gxlcms > 数据库问题 > MySQL1-基础知识点

MySQL1-基础知识点

时间:2021-07-01 10:21:17 帮助过:39人阅读

mysql -u kismet -password ***** mysql -u kismet -h hostname -p/password mysql -u ... -h ... -p/password ... -D databasename mysql -D …… -u kismet -p < test.sql(登录时执行脚本) quit http服务器:/../../httpd -k start/stop/restart   2、创建、查看与删除一个数据库 create database 数据库名 [其他选项]; show databases;【其中的informa_schemamysql是自带的数据库】 drop database 数据库名;   3、选择所要操作的数据库 登录时-D; use 数据库名;(可以不加分号)   4、创建、查看与删除表 (1)create table 表名称(列声明);如: create table students ( id int unsigned not null auto_increment primary key, ........., tel char(11) null default "-"); (2)列声明:名称+类型(可能有unsigned)+(null/not null)+(auto_increment)+(primary key)+(default+……) null/not null:是否可以为空(默认可以为空) auto_increment:适用于整数列(插入为NULL,值为最大+1);只能有一个,而且必须被索引;使用auto_increment列,可以指定插入值,只要它尚未被使用过,后面的插入增量基于该指定的值;last_insert_id()函数可以获得最近插入的auto_increment值(个人猜测在触发器中很有用武之地) primary key:该列为主键,索引列,值唯一,列唯一 default:指定默认值;只支持常量,不支持函数;对于null列,如果不指定则默认为null (3)其他部分 if not exists:如果该表存在,则会报错;为避免报错,可以改为:create if not exists table students …… engine:可以在最后(括号之后)加上engine=innodb/myisam……指定存储引擎 (4)show tables;describe 表名【等价于:show columns from 表名】 (5)drop table 表名;   5、向表中插入数据【血泪教训:insert语句一定要指定插入值与列的对应关系;否则数据库一旦扩展或调整顺序,程序就崩溃了!】 插入完整的行:如果某些列可以由MySQL自动生成而不需要手动添加,可以将它们置为null,MySQL会自己处理,这样的例子包括 自增的主键、timestamp类型等;这种方式最好不要使用,因为一旦表结构发生变化(如顺序变化、添加列),插入语句将失败。 插入行的一部分:指定列名,可以只插入部分数据(其他条件是该列允许null或提供了默认值,否则会报错),或者不按顺序插入 插入多行:单条insert插入多条数据比多个insert效率要高 插入检索出的数据:不要求列名匹配;按照顺序匹配 插入不重复的数据:测试发现,重复与否的判断标准是primary key、unique index,普通的key可以重复 补充:插入操作相对查询来说可能比较耗时(尤其是有很多索引需要更新时)(update和delete同理),有时为了保证检索的效率,可以降低插入的优先级。 insert [into] `user` VALUES(null,‘asdfadsf‘,null,30)#插入完整的行 insert [into] `user`(name,age) values(‘hello‘,45)#插入行的一部分 insert `user`(name,age) values(‘hello‘,45),(‘world‘,400)#插入多行 insert `user`(name,age) select name,age from tmp#插入检索出的数据 insert ignore into …… insert low_priority into#低优先级插入   6、查询表中数据:见四   7、更新表中数据 可以更新多列,用逗号隔开;可以根据表中旧值更新新值(旧值和新值不一定是同一列);新值可以使用子查询获得;使用ingore关键字,当更新出现错误时可以继续更新;新值可以为NULL update user set name=‘zhou‘,age=11 where id=10;#可以有多列,用逗号隔开 update user set age=age+1 where id=1;#根据表中旧值更新新值 update user set age=id+1 where id=10;#旧值与新值不一定是同一列 update user set name=(select name from teacher where id=10) where id=10#新值可以使用子查询获得 update ignore user ……#使用ignore,当更新出现错误时可以继续更新 update user set name=null where ……#新值可以为null   8、删除表中的数据 delete from 表名称 where 删除条件; delete from 表名称;//清空表数据,不能使用delete * fromo 表名称; 如果要删除整个表,尽量不要使用delete,速度较慢,因为它会逐行删除数据;使用truncate table完成相同工作,但速度更快(实际上删除整个表并重新创建一个表),如truncate table ‘user‘ 【对于update和delete,没有办法撤销;因此在执行之前,一定使用select验证下where子句的条件是否争取,否则后果不堪设想】   9、修改表本身:创建表时应该足够谨慎,修改表尽量避免 (1)添加列 alter table 表名 add 列名 列数据类型(可以加其他属性) [after 插入位置]; (2)修改列 alter table 表名 change 列名 列新名称 列数据类型(可以加其他属性); (3)删除列 alter table 表名 drop 列名称; (4)重命名表 alter table 表名 rename 新表名;或 rename table 表名 to 新表名; (5)其他:增加外键等       四、四种SQL语句 1、DDL:Data Definition Language (1)包括:CREATE、ALTER、DROP、TRUNCATE、COMMENT、RENAME (2)不需要commit,因此也无法回滚。 2、DML:Data Manipulation Language 包括:SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN PLAN、LOCK TABLE 3、DCL:Data Control Language 包括:GRANT、REVOKE 4、TCL:Transaction Control Language 包括:SAVEPOINT、ROLLBACK、SET TRANSACTION    

MySQL1-基础知识点

标签:val   括号   数据文件   min   value   应用开发   好处   orm   sql   

人气教程排行