mysql入门教学

  最近应部门主管要求,要求部门提高数据库这块的技能,我特地去学习了一下mysql。跟着网站上的教材做了一份mysql的入门教学。好了,废话也不多说了。先在跟着我一起看看mysql吧。

  

该教学参考网址链接:http://see.xidian.edu.cn/cpp/u/mysql_ml/
1.连接mysql
连接到本地的mysql,有两种方法
打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码
 
②通过开始菜单下的mysql命令行程序,进行进入,只需输入密码即可
 
 
如果你想观察另外主机的连接到远程上的mysql,那么使用以下的方法
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
    mysql -h110.110.110.110 -u root -p abcd123;
想必大家都看出来是怎么样的一个格式了:
mysql -h(-p之后加上远程主机数据库IP地址)
-u(-u之后加上数据库用户名)
-p(-p之后加上数据库密码)
 
连到本机和远程连接到另外主机的方式是不一样的,请大家注意
注:mysql命令行下,若行尾没有分号,可以多行执行一个语句,在我们想执行较为复杂的sql语句时,这无疑让sql语句看起来更加整洁好用
 
③.退出mysql命令:exit(回车)
 
 
2.数据库操作
2.1:创建数据库
命令:create database <数据库名>  注意!sql语句后面要加;

建立一个名为wyx的数据库
   mysql> create database wyx;

例2:创建数据库并分配用户

①CREATE DATABASE 数据库名;

②GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';
这句话的意思是我们利用超级用户localhost把SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER 这些sql权限赋予wyx这个数据库
 
学习到这里,可能有人问每次都有个时间,这个时间就是执行sql的时间拉;然后如果时间很小,则忽略不计,则会显示为0.00 sec;由于我们是对数据库权限进行操作,那么影响的行数肯定是0行拉

③SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码');
给数据库设置密码
 
2.2:显示数据库
命令:show databases (注意:最后有个s)
可以看到我新增的wyx数据库了,另外几个数据库
 
2.3:删除数据库
命令:drop database <数据库名>
删除一个确定存在的数据库
 
删除一个不确定存在的数据库
 mysql> drop database drop_database;
   ERROR 1008 (HY000): Can't drop database 'drop_database'; database doesn't exist
      //发生错误,不能删除'drop_database'数据库,该数据库不存在。
 
 mysql> drop database if exists drop_database;
   Query OK, 0 rows affected, 1 warning (0.00 sec)//产生一个警告说明此数据库不存在

   mysql> create database drop_database;
   Query OK, 1 row affected (0.00 sec)
 
   mysql> drop database if exists drop_database;//if exists 判断数据库是否存在,不存在也不产生错误
   Query OK, 0 rows affected (0.00 sec)
 
2.4:连接数据库
命令: use <数据库名>

例如:如果xhkdb数据库存在,尝试存取它:
   mysql> use xhkdb;
屏幕提示:Database changed
 
有些朋友问到,连接以后怎么退出。其实,不用退出来,use 数据库后,使用show databases就能查询所有数据库,如果想跳到其他数据库,用
   use 其他数据库名字
就可以了。
 
2.5:当前选择的数据库
一些mysql中select的特殊功能
2.5.1显示MYSQL的版本
mysql> select version(); 

2.5. 2. 显示当前时间
mysql> select now(); 

2.5. 3. 显示年月日
SELECT DAYOFMONTH(CURRENT_DATE); 
 

SELECT MONTH(CURRENT_DATE); 
 

SELECT YEAR(CURRENT_DATE); 

2.5. 4. 显示字符串
mysql> SELECT "welecome to my blog!"; 

2.5. 5. 当计算器用
select ((4 * 4) / 10 ) + 25; 


3.数据表操作
3.1创建数据表
命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);

例如,建立一个名为MyClass的表,
字段名 数字类型 数据宽度 是否为空 是否主键 自动增加 默认值
id int 4 primary key auto_increment  
name char 20      
sex int 4     0
degree double 16      

mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
 
注意:①not null为非空,若不设置,则默认为空,系统会给他分配另外的内存,一般建议设置为not null,避免不必要的内存浪费
②primary key 主键
③auto——increment 设置为自增属性
④default设置默认值
⑤double(16,2) 处理数据,最多保留2位小数
 
3.2显示刚刚建的数据库
命令: desc 表名,或者show columns from 表名
mysql>desc Myclass
 
对于key这个属性,可以提到以下知识点,我还没深入研究,想深入研究的同学自己尝试一下:
使用MySQL数据库desc 表名时,我们看到Key那一栏,可能会有4种值,即' ','PRI','UNI','MUL'。
1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列;
2. 如果Key是PRI,  那么该列是主键的组成部分;
3. 如果Key是UNI,  那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL);
4. 如果Key是MUL,  那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL。

如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI,那么"desc 表名"的时候,显示的Key值按照优先级来显示 PRI->UNI->MUL。那么此时,显示PRI。

一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键。
一个唯一性索引列可以显示为MUL, 如果多列构成了一个唯一性复合索引,因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是没一个单独的列依然可以有重复的值,只要ID+NAME是唯一的即可。
 
3.3删除数据表
命令:drop table <表名>
 
3.4表插入数据
命令:①给表的特定表列(字段名)插入值
insert into <表名> [( <字段名1>,..<字段名n > ])] values [( 值1 ), ( 值n )]
②给整表插入数据
insert into  <表名>value [(值1),(值n)]
 
 
 
3.5表更新数据
命令:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例:update Myclass set name='wyx' where id=2;
 
3.6表删除语句
DELETE FROM 表名称 WHERE 列名称 = 值
 
4.应用示例
4.1示例一
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
    id int(3) auto_increment not null primary key,
    name char(10) not null,
    address varchar(50) default ‘深圳’,
    year date
); //建表结束
//以下为插入字段
insert into teacher values(,’allen’,'大连一中’,'1976-10-10′)
;
接下来给个练习大家自己做吧。。。
一个建表和建库的练习
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
    id int(3) auto_increment not null primary key,
    name char(10) not null,
    address varchar(50) default ''深圳'',
    year date
); //建表结束

//以下为插入字段
insert into teacher values('''',''glchengang'',''深圳一中'',''1976-10-10'');
insert into teacher values('''',''jack'',''深圳一中'',''1975-12-23'');

注:在建表中
1、将ID设为长度为3的数字字段:int(3);并让它每个记录自动加一:auto_increment;并不能为空:not null;而且让他成为主字段primary key。

2、将NAME设为长度为10的字符字段

3、将ADDRESS设为长度50的字符字段,而且缺省值为深圳。

4、将YEAR设为日期字段
posted @ 2014-03-01 12:33  Mr.Dantes  阅读(331)  评论(0编辑  收藏  举报